[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: xsl: parsing through specific child nodes
So I tried various things but it doesn't seem to be working. I'll give the complete information: 1. xml file: <?xml version="1.0" encoding="UTF-8"?> <Msg xmlns:ns2="http://www.abc.com/wsdl/v"> <Msg> <cid>103850015_0_1219420995471</cid> <fid>41</fid> <filing>IS</filing> <State>PENDING</State> </Msg> </Msg> 2. xsl file: <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" exclude-result-prefixes="xmlns:ns2 ns2 xmlns"> <xsl:output method="xml" indent="yes" /> <xsl:variable name="file2" select="document('EFF')" /> <xsl:key name='PENDING' match='Msg' use='./State'/> <xsl:template match="/"> <xsl:choose> <xsl:when test="not(//State='PENDING') and not(//State='SUCCEDED')"> <ret> <xsl:copy-of select="//ret/*" /> </ret> </xsl:when> <xsl:when test="not($file2//State='PENDING') and not($file2//State='SUCCEDED')"> <ret> <xsl:copy-of select="$file2//ret/*" /> </ret> </xsl:when> <xsl:otherwise> <xsl:apply-templates select="//ret"/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="ret"> <xsl:apply-templates select="*"/> </xsl:template> <xsl:template match="*"> <xsl:copy> <xsl:choose> <xsl:when test="text()='PENDING'"> <xsl:text>1</xsl:text> </xsl:when> <xsl:otherwise> <xsl:copy-of select="." /> </xsl:otherwise> </xsl:choose> </xsl:copy> </xsl:template> </xsl:stylesheet> 3. Output: <?xml version="1.0" encoding="UTF-8"?> <Msg xmlns:ns2="http://www.abc.com/wsdl/v"> <Msg> <cid>103850015_0_1219420995471</cid> <fid>41</fid> <filing>IS</filing> <State>PENDING</State> </Msg> </Msg> 4.expected output: <?xml version="1.0" encoding="UTF-8"?> <Msg> <cid>103850015_0_1219420995471</cid> <fid>41</fid> <filing>IS</filing> <State>1</State> </Msg> </Msg> First I don't understand how there are 2 Msg nodes. And second I wasn't able to get rid of namespace node by using <element> as suggested by Michael, it's still copying the namespace node. On Mon, Sep 8, 2008 at 6:52 AM, Mukul Gandhi <gandhi.mukul@xxxxxxxxx> wrote: > On Mon, Sep 8, 2008 at 1:16 AM, Mohit Anchlia <mohitanchlia@xxxxxxxxx> wrote: >> 1. So would above template mentioned by Mukul also output node HIJ ? > > I think, "outputting the node" is not the correct terminology. We can > copy the node to the result tree, or write something else to the > result tree, derived from the properties of the input nodes. > >> <xsl:when test="local-name()="HIJ" and . = 'YYYYYY'"> > > This statement will probably not compile, as I can see some misplaced quotes. > > >> 3. Currently I am using XSLT 1.0 and I am using JAXP which uses Xalan. >> How do I start using XSLT 2.0. > > You need to download an XSLT 2.0 processor, like Saxon and using it as > described in the documentation. > >> Would it just be matter of upping version in stylesheet node? > > No. version="2.0" is just a hint to the processor. You need to supply > the XSLT 2.0 stylesheet to a XSLT 2.0 processor like Saxon. > > > -- > Regards, > Mukul Gandhi
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|