Wert eines XML-Elements mit XSLT ersetzen
pefu
- xsl
Hi all,
Ich möchte mit XSLT den Wert INPUTVALUE des folgenden XML Dokuments mit OUTPUTVALUE ersetzen:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bas="http://myURL.de/DataTest_1_0">
<soapenv:Header/>
<soapenv:Body>
<bas:test_ping>
<bas:uecpirp1>
<bas:test>blah</bas:test>
<bas:data>INPUTVALUE</bas:data>
</bas:uecpirp1>
</bas:test_ping>
</soapenv:Body>
</soapenv:Envelope>
Der Wert soll lediglich ersetzt werden, d.h. der Rest des XML-Dokuments soll unverändert bleiben.
Ich bin froh um jede Idee bzw. Gedankenanstoss!
Danke & Gruss,
pefu
Hallo pefu,
Der Wert soll lediglich ersetzt werden, d.h. der Rest des XML-Dokuments soll unverändert bleiben.
Ich bin froh um jede Idee bzw. Gedankenanstoss!
Identitäts-Transformation mit zusätzlichem Textknoten-Template:
<?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"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="text()[.='INPUTVALUE']">
<xsl:text>OUTPUTVALUE</xsl:text>
</xsl:template>
</xsl:stylesheet>
Grüße,
Thomas
Hallo Thomas,
Besten Dank, das klappt ja schonmal bestens! Leider habe ich in meine Frage nicht ganz exakt formuliert...
Der Inhalt INPUTVALUE ist in jedem Request verschieden, befindet sich aber immer im gleichen XML Element <bas:data>INPUTVALUE</bas:data>
In diesem Fall kann ich nicht mit match="text()[.'INPUTVALUE'] darauf zugreifen, oder? Vielmehr müsste ich anstatt auf den text auf den node zugreifen, oder?
Vielen Dank & Gruss,
pefu
<?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"/>
<xsl:template match="@* | node()">
xsl:copy
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template><xsl:template match="text()[.='INPUTVALUE']">
xsl:textOUTPUTVALUE</xsl:text>
</xsl:template></xsl:stylesheet>
Hallo pefu,
Der Inhalt INPUTVALUE ist in jedem Request verschieden, befindet sich aber immer im gleichen XML Element
<bas:data>INPUTVALUE</bas:data>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:bas="http://myURL.de/DataTest_1_0">
<xsl:output method="xml" version="1.0" encoding="UTF-8"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="bas:data/text()[.='INPUTVALUE']">
<xsl:text>OUTPUTVALUE</xsl:text>
</xsl:template>
</xsl:stylesheet>
Grüße,
Thomas
Thomas, vielen Dank!
So klappt nun alles prima.
Gruss,
pefu