XML.orgXML.org
FOCUS AREAS |XML-DEV |XML.org DAILY NEWSLINK |REGISTRY |RESOURCES |ABOUT
OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
RE: [xml-dev] 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@boynings.co.uk] 
> Sent: 18 January 2007 17:47
> To: Xml-Dev
> Subject: [xml-dev] 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,'?@%&apos;&amp;(
> )*+,-. ','')) &gt; 0">A BS7666 AON description must only 
> contain the specified characters</report>
> 
> The problem I have is with the &apos;. This is the result of 
> the transformation using skeleton1-5.xslt:
> 
> <xsl:if test="@AddressFormat='BS7666' and 
> string-length(translate(add:*/add:Description,'?@%'&amp;()*+,-
> . ','')) &gt; 0">
> 
> The problem is that the apostrophe entity has been resolved. 
> I had wondered whether I need to escape it again 
> (&amp;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@lists.xml.org
> subscribe: xml-dev-subscribe@lists.xml.org 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]


News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 1993-2007 XML.org. This site is hosted by OASIS