Subject: Re: [xsl] Problem applying XSL to XML that uses a schema From: Mukul Gandhi <mukul_gandhi@xxxxxxxxx> Date: Wed, 8 Dec 2004 19:59:30 -0800 (PST) |
Hi Tim, You would need to use Schema Aware XSLT processor(and therefore XSLT 2.0). Saxon 8.1 supports this feature.. Regards, Mukul --- tim@xxxxxxxxxxx wrote: > Hello, > > I am trying to apply an XSL stylesheet to an XML > file that uses a schema. > I will discuss first what does work. > > The following is the input XML file (XML1): > <?xml version="1.0" encoding="UTF-8" ?> > <!-- MainComment1 --> > <mainelement> > > <!-- SubComment1.1 --> > <subelement name="sub1">content</subelement> > <!-- SubComment1.2 --> > > <!-- SubComment2.1 --> > <subelement name="sub2">content</subelement> > <!-- SubComment2.2 --> > > </mainelement> > <!-- MainComment2 --> > > > The following is the xsl I have so far (XSL1): > <?xml version="1.0" encoding="UTF-8"?> > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > <xsl:output method="xml" version="1.1" indent="yes" > /> > > <xsl:template match="comment()"> > <xsl:comment><xsl:value-of > select="."/></xsl:comment> > </xsl:template> > > <xsl:template match="subelement|@*"> > <xsl:copy> > <xsl:apply-templates select="node()|@*"/> > </xsl:copy> > </xsl:template> > > <xsl:template match="mainelement|@*"> > <xsl:copy> > <xsl:apply-templates select="node()|@*"/> > > <xsl:comment >NewSubComment1.1</xsl:comment> > <xsl:text> </xsl:text> > <subelement name="newsub">content</subelement> > <xsl:comment >NewSubComment1.2</xsl:comment> > </xsl:copy> > </xsl:template> > </xsl:stylesheet> > > > The following is the output from applying XSL1 to > XML1 (OUTPUT1): > <?xml version="1.0" encoding="UTF-8"?> > <!-- MainComment1 --> > <mainelement> > > <!-- SubComment1.1 --> > <subelement name="sub1">content</subelement> > <!-- SubComment1.2 --> > > <!-- SubComment2.1 --> > <subelement name="sub2">content</subelement> > <!-- SubComment2.2 --> > > <!--NewSubComment1.1--> > <subelement name="newsub">content</subelement> > <!--NewSubComment1.2--> > > </mainelement> > <!-- MainComment2 --> > > > This is exactly what I want without the schema > (OUTPUT1). The problem is when > the XML file uses a schema which is my real world > problem. > > The following is the input XML file that uses the > schema (XML2): > <?xml version="1.0" encoding="UTF-8" ?> > <!-- MainComment1 --> > <mainelement > xmlns="http://www.mydomain.com/mainelement" > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > > xsi:schemaLocation="http://www.mydomain.com/mainelement > file:///C:/schemas/mainelement.xsd"> > > <!-- SubComment1.1 --> > <subelement name="sub1">content</subelement> > <!-- SubComment1.2 --> > > <!-- SubComment2.1 --> > <subelement name="sub2">content</subelement> > <!-- SubComment2.2 --> > > </mainelement> > <!-- MainComment2 --> > > > When I apply XSL1 to XML2 I get the following output > (OUTPUT2): > <?xml version="1.0" encoding="UTF-8"?> > <!-- MainComment1 --> > > <!-- SubComment1.1 --> > content > <!-- SubComment1.2 --> > > <!-- SubComment2.1 --> > content > <!-- SubComment2.2 --> > > <!-- MainComment2 --> > > > > > > OUTPUT2 is clearly not what I want. I want the > exact same output as OUTPUT1 > except with the schema location and xmlns etc. The > following is the desired > output (DESIREDOUTPUT): > <?xml version="1.0" encoding="UTF-8"?> > <!-- MainComment1 --> > <mainelement > xmlns="http://www.mydomain.com/mainelement" > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > > xsi:schemaLocation="http://www.mydomain.com/mainelement > file:///C:/schemas/mainelement.xsd"> > > <!-- SubComment1.1 --> > <subelement name="sub1">content</subelement> > <!-- SubComment1.2 --> > > <!-- SubComment2.1 --> > <subelement name="sub2">content</subelement> > <!-- SubComment2.2 --> > > <!--NewSubComment1.1--> > <subelement name="newsub">content</subelement> > <!--NewSubComment1.2--> > </mainelement> > <!-- MainComment2 --> > > > > > > Can anyone help me understand how to modify my XSL1 > to create the DESIREDOUTPUT? > Any help would be greatly appreciated. I have been > trying to make this work > for days! > > > Thanks, > > Tim __________________________________ Do you Yahoo!? Yahoo! Mail - Find what you need with new enhanced search. http://info.mail.yahoo.com/mail_250
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Problem applying XSL to XML t, tim | Thread | Re: [xsl] Problem applying XSL to X, George Cristian Bina |
[xsl] Problem applying XSL to XML t, tim | Date | [xsl] XSL-FO insert a blank line, Ranjan K. Baisak |
Month |