Subject: [xsl] Parsing XML from a CDATA Structure From: Olson Family <olsonfam@xxxxxxxxxxxxx> Date: Wed, 03 Aug 2005 20:23:03 -0400 |
Using Saxon 8, I am attempting to parse an XML string from within a CDATA Structure. Using the saxon:parse extension I have been able to do this, except when the xml string includes the following tag at the beginning of the string. <?xml version="1.0" encoding="UTF-8"?> I am getting the following error net.sf.saxon.xpath.DynamicError: org.xml.sax.SAXParseException: The processing instruction target matching "[xX][mM][lL]" is not allowed. Transformation failed: Run-time errors were reported The sample xsl file will succesfully parse the xml file if I remove the string from the cdata structure. I don't control the structure of the XML, so I do not have the ability to somehow strip out the ?xml string. Is there any way to have Saxon ignore this string. ===============file.xsl=========================== > <?xml version="1.0" encoding="ISO-8859-1" ?> > <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:saxon="http://saxon.sf.net/"> > <xsl:output method="text" indent="no"/> > <xsl:template match="/"> > <xsl:apply-templates select="busmessage/body/field[@name='^data^']"/> > </xsl:template> > > <xsl:template match="busmessage/body/field[@name='^data^']"> > > <ID> > <xsl:variable name="dynamic" select="saxon:parse(field[@name='body'])"/> > <xsl:value-of select="$dynamic/usiTradeEvent/tradeId"/> > </ID> > </xsl:template> > </xsl:stylesheet> ===============file.xml (with <?xml version="1.0" encoding="UTF-8"?>) string ================= > <?xml version="1.0"?> > <busmessage> > <header> > <sendSubject>TEST.MESSAGE</sendSubject> > <replySubject></replySubject> > <sender seq="2687" timeLimit="0.0">AuroraPub</sender> > </header> > <body> > <field name="^pfmt^" busType="16" javaType="java.lang.Short" id="0"> > 10</field> > <field name="^ver^" busType="16" javaType="java.lang.Short" id="0"> > 30</field> > <field name="^type^" busType="16" javaType="java.lang.Short" id="0"> > 1</field> > <field name="^encoding^" busType="16" javaType="java.lang.Short" id="0"> > 1</field> > <field name="^prefixList^" busType="1" javaType="com.tibco.tibrv.TibrvMsg" id="0"> > <field name="default" busType="8" javaType="java.lang.String" id="0"> > <![CDATA[/tibco/public/class/DEFI/FI/Upstreaminterfaces/CF]]> > </field> > </field> > <field name="^tracking^" busType="1" javaType="com.tibco.tibrv.TibrvMsg" id="0"> > <field name="^id^" busType="8" javaType="java.lang.String" id="0"> > <![CDATA[1LE--A--EixxCk6Q-0q6eX6Bs-ItI]]> > </field> > <field name="^1^" busType="8" javaType="java.lang.String" id="1"> > <![CDATA[BW.Aurora-Aurora.Process/DEFI/FI/Upstreaminterfaces/Aurora.process. Job-18148]]> > </field> > </field> > <field name="^data^" busType="1" javaType="com.tibco.tibrv.TibrvMsg" id="0"> > <field name="^class^" busType="8" javaType="java.lang.String" id="0"> > <![CDATA[CFMsg]]> > </field> > <field name="body" busType="8" javaType="java.lang.String" id="0"> > <![CDATA[<?xml version="1.0" encoding="UTF-8"?> > <usiTradeEvent> > <eventType>New</eventType> > <tradeType>Buy</tradeType> > <tradeScheme>MUSTANG</tradeScheme> > <tradeId>RICHO-00123456</tradeId> > <tradeVersion>0</tradeVersion> > <portfolioId>MPT1</portfolioId> > <partyScheme>CIF</partyScheme> > <partyType>COUNTERPARTY</partyType> > <partyId>MX-5</partyId> > <traderScheme>MUSTANG</traderScheme> > <traderId>RGrandur</traderId> > <marginAmount>0.000000</marginAmount> > <marginBpMultiplier>1</marginBpMultiplier> > <tradeDate>2005-08-02</tradeDate> > <inputTimeStamp>2005-08-02</inputTimeStamp> > <comment>TW</comment> > <bond> > <securityScheme>CUSIP</securityScheme> > <securityId>VRR562</securityId> > <nominalAmount>38.00</nominalAmount> > <priceType>PRICE</priceType> > <price>98.9921875000</price> > <settlementDate>2005-08-03</settlementDate> > </bond> > </usiTradeEvent>]]> > </field> > </field> > </body> > </busmessage> ================= output ============================== net.sf.saxon.xpath.DynamicError: org.xml.sax.SAXParseException: The processing instruction target matching "[xX][mM][lL]" is not allowed. Transformation failed: Run-time errors were reported ===============file1.xml (without <?xml version="1.0" encoding="UTF-8"?>) string ================= > <?xml version="1.0"?> > <busmessage> > <header> > <sendSubject>TEST.MESSAGE</sendSubject> > <replySubject></replySubject> > <sender seq="2687" timeLimit="0.0">AuroraPub</sender> > </header> > <body> > <field name="^pfmt^" busType="16" javaType="java.lang.Short" id="0"> > 10</field> > <field name="^ver^" busType="16" javaType="java.lang.Short" id="0"> > 30</field> > <field name="^type^" busType="16" javaType="java.lang.Short" id="0"> > 1</field> > <field name="^encoding^" busType="16" javaType="java.lang.Short" id="0"> > 1</field> > <field name="^prefixList^" busType="1" javaType="com.tibco.tibrv.TibrvMsg" id="0"> > <field name="default" busType="8" javaType="java.lang.String" id="0"> > <![CDATA[/tibco/public/class/DEFI/FI/Upstreaminterfaces/CF]]> > </field> > </field> > <field name="^tracking^" busType="1" javaType="com.tibco.tibrv.TibrvMsg" id="0"> > <field name="^id^" busType="8" javaType="java.lang.String" id="0"> > <![CDATA[1LE--A--EixxCk6Q-0q6eX6Bs-ItI]]> > </field> > <field name="^1^" busType="8" javaType="java.lang.String" id="1"> > <![CDATA[BW.Aurora-Aurora.Process/DEFI/FI/Upstreaminterfaces/Aurora.process. Job-18148]]> > </field> > </field> > <field name="^data^" busType="1" javaType="com.tibco.tibrv.TibrvMsg" id="0"> > <field name="^class^" busType="8" javaType="java.lang.String" id="0"> > <![CDATA[CFMsg]]> > </field> > <field name="body" busType="8" javaType="java.lang.String" id="0"> > <![CDATA[<usiTradeEvent> > <eventType>New</eventType> > <tradeType>Buy</tradeType> > <tradeScheme>MUSTANG</tradeScheme> > <tradeId>RICHO-00123456</tradeId> > <tradeVersion>0</tradeVersion> > <portfolioId>MPT1</portfolioId> > <partyScheme>CIF</partyScheme> > <partyType>COUNTERPARTY</partyType> > <partyId>MX-5</partyId> > <traderScheme>MUSTANG</traderScheme> > <traderId>RGrandur</traderId> > <marginAmount>0.000000</marginAmount> > <marginBpMultiplier>1</marginBpMultiplier> > <tradeDate>2005-08-02</tradeDate> > <inputTimeStamp>2005-08-02</inputTimeStamp> > <comment>TW</comment> > <bond> > <securityScheme>CUSIP</securityScheme> > <securityId>VRR562</securityId> > <nominalAmount>38.00</nominalAmount> > <priceType>PRICE</priceType> > <price>98.9921875000</price> > <settlementDate>2005-08-03</settlementDate> > </bond> > </usiTradeEvent>]]> > </field> > </field> > </body> > </busmessage> ================= output ============================== RICHO-00123456
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] bookmarks, David Carlisle | Thread | Re: [xsl] Parsing XML from a CDATA , David Carlisle |
[xsl] bookmarks, cookie king | Date | Re: [xsl] Printing ancestor element, Mukul Gandhi |
Month |