![]() |
![]() | ![]() | ![]() | Altova Mailing List Archives>Archive Index >comp.text.xml Archive Home >Recent entries [Thread Prev] >Thread Next - Re: Question on " inside function arguments Question on " inside function argumentsTo: NULL Date: 6/24/2003 9:19:00 PM Hi I have an XML documnet and a XSLT document as shown below THe XSLT document brings back a filtered docmument that has the VendorName that starts with a particular sub-string This works as expected with alphabet and number characters and the ' (single quote ' entity) character but does not work if a double quote character " is part of the string to filter on This returns all Vendor Names that begin with A (either case) The XML Document <?xml-stylesheet type="text/xsl" href="C:\XSL1.xsl"?> <NEXXML xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <columns/> <rows> <row SAPVendorRef="15001" VendorName="A" A Meats" EntityId="3021" rsposition="1"/> <row SAPVendorRef="57232" VendorName="Abbeyhouse Foods" EntityId="3050" rsposition="2"/> <row SAPVendorRef="15011" VendorName="Alexandra Rentals" EntityId="3023" rsposition="3"/> <row SAPVendorRef="10184" VendorName="Alexandra Workwear PLC" EntityId="3014" rsposition="4"/> <row SAPVendorRef="15012" VendorName="Allied Bakeries NI" EntityId="3024" rsposition="5"/> <row SAPVendorRef="60143" VendorName="Astron On Line" EntityId="3056" rsposition="6"/> <row SAPVendorRef="56531" VendorName="Backgammo'n" EntityId="3048" rsposition="7"/> <row SAPVendorRef="15062" VendorName="British Bakeries NI" EntityId="3025" rsposition="8"/> </rows> </NEXXML> The XSLT Document <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <xsl:output method="xml"/> <xsl:template match="/"> <NEXXML> <rows> <xsl:apply-templates/> </rows> </NEXXML> </xsl:template> <xsl:template match="rows"> <xsl:apply-templates select="row"/> </xsl:template> <xsl:template match="row[ starts-with(translate( @VendorName,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRS TUVWXYZ"),translate("A","abcdefghijklmnopqrstuvwxyz" ;,"ABCDEFGHIJKLMNOPQRSTUVWXYZ")) ]"> <xsl:copy-of select="."/> </xsl:template> </xsl:stylesheet> If I want to search on the string A" the line <xsl:template match="row[ starts-with(translate( @VendorName,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRS TUVWXYZ"),translate("A","abcdefghijklmnopqrstuvwxyz" ;,"ABCDEFGHIJKLMNOPQRSTUVWXYZ")) ]"> <xsl:copy-of select="."/> changes to: <xsl:template match="row[ starts-with(translate( @VendorName,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRS TUVWXYZ"),translate("A"","abcdefghijklmnopqrstuvwxy z","ABCDEFGHIJKLMNOPQRSTUVWXYZ")) ]"> <xsl:copy-of select="."/> I now get an error Expected token ')' found 'STRING' From what I can see, this is because the XML parser reads the translate function intereprets the 1st " as the start of the first argument and interprets the 2nd " as the end of the 1st argument, instead of being part of the first argument and then expects a comma (,) and the second string argument How I can make the parser take the 2nd quote as part of the first string argument if there is a quote in the 1st argument I know I could probably do this by replacing the double quotes with single quotes but then I am assumming I will get the same problem with single quotes been part of the literal string. Your help is greatly appreciated. Thanks in advance Regards David Furey | ![]() | ![]() | ![]() |
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | |||||
|
