xsl-list
[Top] [All Lists]

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

2007-01-24 13:40:04

Why not just:

<xsl:copy-of 
select="//DataService/Transaction/Response/MasterCatalogRecord/EntityData[../ExternalKeys/Key[1]
 = '2' and ../ExternalKeys/Key[2] = 'b']"/>

No need for a xsl:for-each.


Andy.

-----Original Message-----
From: Chris Coyle [mailto:chriscoyle(_at_)yahoo(_dot_)com] 
Sent: 24 January, 2007 14:51
To: Mullberytech.com
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

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



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