xsl-list
[Top] [All Lists]

[xsl] XSLT to query/output a portion of an XML source document

2007-01-24 13:17:44


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

--~------------------------------------------------------------------
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>