Tag-Name ändern
nralt
- xsl
Hallo,
ich möchte mit XLS Tag-Namen in einer XML-Datei ändern
Beispiel:
ist:
<root>
<page1>
<pos1>text</pos1>
<pos2>text</pos2>
<pos3>text</pos3>
<pos4>text</pos4>
</page1>
</root>
soll:
<root>
<page1>
<c1>text</c1>
<c2>text</c2>
<c3>text</c3>
<c4>text</c4>
</page1>
</root>
nun könnte ich im XLS für jeden Tag einen Eintrag vornehmen:
<xsl:template match="pos1">
<c1>
xsl:apply-templates/
</c1>
Kennt jemand einen einfacheren Weg, um nur "pos" zu ändern
Hallo,
wenn du:
<root>
<page1>
<pos1>text</pos1>
<pos2>text</pos2>
<pos3>text</pos3>
<pos4>text</pos4>
</page1>
</root>
in:
<root>
<page1>
<c1>text</c1>
<c2>text</c2>
<c3>text</c3>
<c4>text</c4>
</page1>
</root>
umwandelst, was ist dann gewonnen? Wie soll:
<xsl:template match="pos1">
dann überhaupt eine pos finden? Die sind doch weg?
Und wo kommt das xml denn her? Eventuell hilft ein Suchen und Ersetzen mit dem Texteditor?
Reine Spekulation, aber vielleicht geht's in die richtige Richtung:
<root>
<page1>
<c pos="1">text</c1>
<c pos="2">text</c2>
<c pos="3">text</c3>
<c pos="4">text</c4>
</page1>
</root>
LG, Patty
Hallo nralt,
Kennt jemand einen einfacheren Weg, um nur "pos" zu ändern
Identitäts-Template mit Spezialbehandlung der pos*-Elemente:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[starts-with(local-name(),'pos')]">
<xsl:element name="c{substring-after(local-name(),'pos')}">
<xsl:apply-templates select="@* | node()"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Ergebnis:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<page1>
<c1>text</c1>
<c2>text</c2>
<c3>text</c3>
<c4>text</c4>
</page1>
</root>
Grüße,
Thomas
Vielen Dank für den Tipp, werde ihn gleich mal ausprobieren