Hierarchie flach legen
I.Tacker
- xsl
0 ThomasM0 I.Tacker
0 Thomas J.S.
Hallo,
ich bin absoluter Neuling und muss eine XML-Datei als Textdatei ausgeben.
Der Input sieht so aus
<Folder>
<Name>Alpha</Name>
<Berechtigung>
<Name>Otto</Name>
<Typ>read</Typ>
</Berechtigung>
<Berechtigung>
<Name>Willi</Name>
<Typ>none</Typ>
</Berechtigung>
...
</Folder>
<Folder>
<Name>Test</Name>
<Berechtigung>
<Name>Anna</Name>
<Typ>read/write</Typ>
</Berechtigung>
<Berechtigung>
<Name>Willi</Name>
<Typ>none</Typ>
</Berechtigung>
</Folder>
...
herauskommen soll etwas in der Art
Folder Berechtigung
Alpha Otto read
Alpha Willi none
...
Test Anna read/write
Test Willi none
...
Wäre froh, wenn mir jemand auf die Spünge helfen könnte.
Grüße
I.Tacker
Hallo I.Tacker,
herauskommen soll etwas in der Art
Folder Berechtigung
Alpha Otto read
Alpha Willi none
...
Test Anna read/write
Test Willi none
...
Über die Berechtigungen lässt sich das Ziel so erreichen (Tabs und Umbrüche ggf. anpassen):
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:template match="/">
<xsl:text>Folder	Berechtigung
</xsl:text>
<xsl:apply-templates select="//Berechtigung"/>
</xsl:template>
<xsl:template match="Berechtigung">
<xsl:value-of select="preceding-sibling::Name"/><xsl:text>	</xsl:text>
<xsl:value-of select="Name"/><xsl:text>		</xsl:text>
<xsl:value-of select="Typ"/>
<xsl:if test="position() != last()"><xsl:text>
</xsl:text></xsl:if>
</xsl:template>
</xsl:stylesheet>
Ergebnis:
Folder Berechtigung
Alpha Otto read
Alpha Willi none
Test Anna read/write
Test Willi none
Grüße,
Thomas
Vielen Dank für die Unterstützung.
Das Problem ist gelöst,
I.Tacker
Hallo I.Tacker,
»» herauskommen soll etwas in der Art
»»
»» Folder Berechtigung
»» Alpha Otto read
»» Alpha Willi none
»» ...
»» Test Anna read/write
»» Test Willi none
»» ...Über die Berechtigungen lässt sich das Ziel so erreichen (Tabs und Umbrüche ggf. anpassen):
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:template match="/">
xsl:textFolder	Berechtigung
</xsl:text>
<xsl:apply-templates select="//Berechtigung"/>
</xsl:template><xsl:template match="Berechtigung">
<xsl:value-of select="preceding-sibling::Name"/>xsl:text	</xsl:text>
<xsl:value-of select="Name"/>xsl:text		</xsl:text>
<xsl:value-of select="Typ"/>
<xsl:if test="position() != last()">xsl:text
</xsl:text></xsl:if>
</xsl:template></xsl:stylesheet>
>
> Ergebnis:
>
> Folder Berechtigung
> Alpha Otto read
> Alpha Willi none
> Test Anna read/write
> Test Willi none
>
> Grüße,
> Thomas
Hallo,
ich bin absoluter Neuling und muss eine XML-Datei als Textdatei ausgeben.
Wäre froh, wenn mir jemand auf die Spünge helfen könnte.
Grüße
I.Tacker
Durch tab-Zeichen getrennt:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text"/>
<xsl:template match="WurzelElementDesXMLs">
xsl:textFolder	Berechtigung
</xsl:text>
<xsl:for-each select="Folder">
<xsl:variable name="fname" select="Name" />
<xsl:for-each select="Berechtigung">
<xsl:value-of select="$fname" />xsl:text	</xsl:text><xsl:value-of select="Name" />xsl:text	</xsl:text><xsl:value-of select="Typ" />xsl:text
</xsl:text>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Ausgabe:
Folder Berechtigung
Alpha Otto read
Alpha Willi none
Test Anna read/write
Test Willi none
Grüße
Thomas