Antw: Re: [xsl] join two files - plz help

Subject: Antw: Re: [xsl] join two files - plz help
From: "Michael Donabauer" <michael.donabauer@xxxxxxxxxxxx>
Date: Mon, 20 Jun 2005 15:32:24 +0200
Hi,
 
thank you very much for your reply, when i try to compile this source,
i get no results (blank page with "<?xml version="1.0"
encoding="ISO-8859-1"?>" in the first line. But no syntax errors. The
problem is, that i'm new to xslt. In general i always think "read the
fucking manual",  but this time there are only dead-ends from my point
of view!
Whats's wrong here?

 
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
 
<xsl:template match="/SymCLI_ML/Symmetrix/Device">
<xsl:for-each
select="document('lspv_lirp33.xml')/Front_End/Port[@pd_name=current()/@pd_name]/@aix_vg">
 
 <tr>
        <td><xsl:value-of select="@dev_name"/></td>
        <td><xsl:value-of select="Front_End/Port/@pd_name"/></td>
        <td><xsl:value-of select="Front_End/Port/@aix_vg"/></td>
       </tr>
 
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
 

ciao & thanks for every help
::mike


>>> sdc@xxxxxxxxxx 06/20/05 2:08  >>>

On Mon, 2005-06-20 at 12:57 +0200, Michael Donabauer wrote: 
> Hi *,
> 
> i have two files which have to be joined trough xslt. I am using the
> msxsl.exe from the mircosoft page. I hope this is anyhow the
adequate
> list.
> 
> Here is an excerpt of the first XML-File, there is an object called
> ".../Device/Front_End/Port/@pd_name" inside:
> 
> <?xml version="1.0" standalone="yes" ?>
> 
> <SymCLI_ML>
> <Symmetrix id="000287970171">
> <Device dev_name="0007" status="Ready" configuration="2-Way Mir">
> <Flags worm_protected="False" grouped="False" meta="None"/>
> <Capacity megabytes="3"/>
> <Front_End>
> <Port pd_name="/dev/rhdiskpower0" director="02C" port="0"/>
> </Front_End>
> <Back_End>
> <Disk director="16A" interface="C" tid="3"/>
> </Back_End>
> </Device>
> <Device dev_name="0008" status="Ready" configuration="2-Way Mir">
> <Flags worm_protected="False" grouped="False" meta="None"/>
> <Capacity megabytes="3"/>
> <Front_End>
> <Port pd_name="/dev/rhdiskpower1" director="02C" port="0"/>
> </Front_End>
> <Back_End>
> <Disk director="01B" interface="C" tid="3"/>
> </Back_End>
> </Device>
> ...
> 
> With Unix-Shell (on AIX 5.3) i have generated an XML-File with the
> Output of the AIX-Command lspv (list physical volumes). The content
of
> this valid xml-file looks like this: 
> 
> <?xml version="1.0" standalone="yes" ?>
> <SymCLI_ML>
> <Symmetrix id="000287970171">
> <Device>
> <Front_End>
>    <Port pd_name="/dev/rhdiskpower49" aix_vg="oraclevg">
>    </Port>
>    <Port pd_name="/dev/rhdisk0" aix_vg="rootvg">
>    </Port>
>    <Port pd_name="/dev/rhdisk1" aix_vg="rootvg">
>    </Port>
>    <Port pd_name="/dev/rhdiskpower4" aix_vg="oraclevg">
>    </Port>
>    <Port pd_name="/dev/rhdiskpower5" aix_vg="tsmvg">
>    </Port>
>    <Port pd_name="/dev/rhdiskpower6" aix_vg="tsmvg">
> 
> ...
> 
> You see, in both files there are entries called "pd_name". Plz.
could
> you tell me how to join these two files? I need a report that shows
at
> least every "dev_name" and "*hdiskpower*" in the first mentioned
sample
> with the correct "aix_vg" in the second snippet. I have already read
> many examples, but i can't make the grade. Any hint would be
> appreciated.

You need to use the document function. See:

http://www.w3.org/TR/xslt#function-document 

What you'll want is something like this:

document("foo.xml")//Port[@pd_name=current()/@pd_name]/@aix_vg

sdc

> Thanks in advance
> ::mike

Current Thread