RE: [xsl] Accessing two XML files from XSL file

Subject: RE: [xsl] Accessing two XML files from XSL file
From: "Houghton,Andrew" <houghtoa@xxxxxxxx>
Date: Sat, 9 Jul 2011 23:49:33 -0400
You can pass the URI of the second XML document into the transform and then
use doc-available() and doc() to access the second XML document. A rough
untested sketch:

Command line using saxon: -o out.xml first.xml xsl1.xsl "uri=second.xml"

<xsl:transform>
  <xsl:param name="uri" as="xsd:string?" />
  <xsl:template match="button">
    <button id="{id}" type="button"
style="position:fixed;top:{y}px;left:{x}px;">
      <xsl:value-of select="value" />
    </button>
  </xsl:template>
  <xsl:template match="/">
    <xsl:apply-templates select="xml1/button" />
    <xsl:if test="doc-available($uri)">
      <xsl:variable name="doc" as="document-node()" select="doc($uri)" />
      <xsl:apply-templates select="$doc/xml2/button" />
    </xsl:if>
  </xsl:template>
</xsl:transform>


Hope this helps, Andy.


> -----Original Message-----
> From: Sanjaya Liyanage [mailto:sanjayacl@xxxxxxxxx]
> Sent: Saturday, July 09, 2011 23:21
> To: xsl-list
> Subject: [xsl] Accessing two XML files from XSL file
>
> Hi,
>    I want to access two XML files within my XSL file.How can I achieve
> it? Any ideas are welcome
>
> I can access the first.xml file as below because it has the reference
> to XSL file(xsl1.xsl).
>
>    <xsl:for-each select="xml1/button">
>    <button id="{id}" type="button"
> style="position:fixed;top:{y}px;left:{x}px;"><xsl:value-of
> select="value"/></button>
>    </xsl:for-each>
>
> I want to have something like below which is working which access the
> second.XML
>
>    <xsl:for-each select="xml2/button">
>    <button id="{id}" type="button"
> style="position:fixed;top:{y}px;left:{x}px;"><xsl:value-of
> select="value"/></button>
>    </xsl:for-each>
>
> first.xml
>
> <?xml version="1.0" encoding="UTF-8"?>
> <?xml-stylesheet type="text/xsl" href="xslt1.xsl"?>
>
> <xml1>
> <button>
> <id>btn1</id>
> <x>225</x>
> <y>450</y>
> <value>Submit</value>
> </button>
> </xml1>
>
> second.xml
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <xml2>
> <button>
> <id>btn2</id>
> <x>325</x>
> <y>550</y>
> <value>Submit</value>
> </button>
> </xml2>
>
> Thank you
> Sanjaya Liyanage

Current Thread