Subject: RE: [xsl] XSLT to query/output a portion of an XML source document From: cknell@xxxxxxxxxx Date: Wed, 24 Jan 2007 16:00:35 -0500 |
I had to clean up your XML ("MasterCatalogResponse" in the opening tag does not match "" in the closing tag), but here is a quick and dirty stylesheet that does what you ask. Whenever I do one of these, the next person to come along invariably has a much more elegant solution, so you may want to hold your fire pending further responses. <?xml version="1.0"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:strip-space elements="*" /> <xsl:output method="xml" indent="yes" encoding="UTF-8" /> <xsl:param name="key1" /> <xsl:param name="key2" /> <xsl:template match="/"> <xsl:apply-templates /> </xsl:template> <xsl:template match="Transaction"> <xsl:apply-templates /> </xsl:template> <xsl:template match="Response"> <xsl:apply-templates select="MasterCatalogResponse[ExternalKeys[Key=$key1 and Key=$key2]]" /> </xsl:template> <xsl:template match="MasterCatalogResponse"> <xsl:copy-of select="EntityData" /> </xsl:template> </xsl:stylesheet> -- Charles Knell cknell@xxxxxxxxxx - email -----Original Message----- From: Chris Coyle <chriscoyle@xxxxxxxxx> Sent: Wed, 24 Jan 2007 11:51:12 -0800 (PST) To: "Mullberytech.com" <xsl-list@xxxxxxxxxxxxxxxxxxxxxx> Subject: [xsl] XSLT to query/output a portion of an XML source document I need to write a query to pull 1 node out of a source XML document. The source document has a structure of <Transaction> <Response> <MasterCatalogResponse> <ExternalKeys> <Key>1</Key> <Key>a</Key> </ExternalKeys> <EntityData> <Attribute>a</Attribute> <Attribute>b</Attribute> </EntityData> </MasterCatalogRecord> <MasterCatalogResponse> <ExternalKeys> <Key>2</Key> <Key>b</Key> </ExternalKeys> <EntityData> <Attribute>a</Attribute> <Attribute>b</Attribute> </EntityData> </MasterCatalogRecord> <MasterCatalogResponse> <ExternalKeys> <Key>3</Key> <Key>c</Key> </ExternalKeys> <EntityData> <Attribute>a</Attribute> <Attribute>b</Attribute> </EntityData> </MasterCatalogRecord> </Response> </Transaction> I need to extract the <EntityData> element for a given <ExternalKeys> value match. The result should look like this for an ExternalKeys (2,b) <EntityData> <Attribute>a</Attribute> <Attribute>b</Attribute> </EntityData> This is what I tried: <?xml version="1.0" encoding="UTF-8"?> <?altova_samplexml SampleQueryResponse.xml?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions"> <xsl:output method="xml" encoding="UTF-8" indent="yes" /> <xsl:template match="/"> <xsl:for-each select="//DataService/Transaction/Response/MasterCatalogRecord"> <xsl:element name="EntityData"> <xsl:value-of select="."/> </xsl:element> </xsl:for-each> </xsl:template> </xsl:stylesheet> Any suggestions are welcome. ____________________________________________________________________________________ Bored stiff? Loosen up... Download and play hundreds of games for free on Yahoo! Games. http://games.yahoo.com/games/front
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] XSLT to query/output a po, Houghton,Andrew | Thread | Re: [xsl] Input requested for a goo, Rashmi Rubdi |
RE: [xsl] XSLT to query/output a po, Houghton,Andrew | Date | Re: [xsl] Input requested for a goo, Rashmi Rubdi |
Month |