[Home] [By Thread] [By Date] [Recent Entries]
Thanks Michael. That is what I thought, and therefore the first thing I tried, but it didn't work. This leaves two possibilities (a) finger trouble (such as not saving the file before testing) and (b) parser error. I will try again tomorrow. If this works, the problem will be that the many Schematron files are generated directly from a spreadsheet, and there is somewhere else that I cannot use apostrophe as the delimiter. I feel some text processing coming on ... Paul > -----Original Message----- > From: Michael Kay [mailto:mike@s...] > Sent: 18 January 2007 18:00 > To: 'Paul Spencer'; 'Xml-Dev' > Subject: RE: Schematron and apostrophes > > > For an XPath 1.0 string literal embedded in an XML attribute, the rule is: > > * you can include the attribute delimiter within the string > literal by using > an XML character reference > > * you can't include the string literal delimiter within the > string literal, > however hard you try > > So the simplest approach if you want to use apos within a string > literal is > to use apos as the attribute delimiter, quot as the string delimiter, and > ' for the character itself. > > It's also possible to use the same delimiter for the attribute and for the > string literal provided that the latter is ampersand-escaped; in this case > you can use the other delimiter unescaped within the string to represent > itself. > > In an XSLT context, you can get around this using variables, but I don't > know if that's an option in Schematron. > > It becomes easier with XPath 2.0, which allows the string delimiter to be > escaped within the string by doubling it. > > Michael Kay > http://www.saxonica.com/ > > > > -----Original Message----- > > From: Paul Spencer [mailto:xml-dev-list@b...] > > Sent: 18 January 2007 17:47 > > To: Xml-Dev > > Subject: Schematron and apostrophes > > > > I have a rule in Schematron 1.5 to test for characters > > outside those allowed in a text string (I have shortened the > > list of characters here): > > > > <report test="@AddressFormat='BS7666' and > > string-length(translate(add:*/add:Description,'?@%'&( > > )*+,-. ','')) > 0">A BS7666 AON description must only > > contain the specified characters</report> > > > > The problem I have is with the '. This is the result of > > the transformation using skeleton1-5.xslt: > > > > <xsl:if test="@AddressFormat='BS7666' and > > string-length(translate(add:*/add:Description,'?@%'&()*+,- > > . ','')) > 0"> > > > > The problem is that the apostrophe entity has been resolved. > > I had wondered whether I need to escape it again > > (&apos;), but the ampersand entity is not resolved, so > > this does not work either. Swapping the apostrophe and quote > > delimiters does not help. > > > > Any ideas to either fix the way I am doing this or for a > > different way to achieve the same in Schematron? This rule > > will be used in several systems, and I cannot control the > > application environment. As far as I know, everyone is using > > MSXML, but whatever I end up with should not be > > XSLT-processor dependent. > > > > Regards > > > > Paul Spencer > > > > > > ______________________________________________________________ > > _________ > > > > XML-DEV is a publicly archived, unmoderated list hosted by > > OASIS to support XML implementation and development. To > > minimize spam in the archives, you must subscribe before posting. > > > > [Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/ > > Or unsubscribe: xml-dev-unsubscribe@l... > > subscribe: xml-dev-subscribe@l... List archive: > > http://lists.xml.org/archives/xml-dev/ > > List Guidelines: http://www.oasis-open.org/maillists/guidelines.php > > >
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] |

Cart



