xsl-list
[Top] [All Lists]

Parsing XML from a CDATA Structure

2005-08-03 17:23:03
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[(_at_)name='^data^']"/>
    </xsl:template>

            <xsl:template match="busmessage/body/field[(_at_)name='^data^']">

                    <ID>
                            <xsl:variable name="dynamic"
select="saxon:parse(field[(_at_)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


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>
  • Parsing XML from a CDATA Structure, Olson Family <=