Ich habe eine XML-Datei, die einige Werte in Kind Element sowie in Attributen hat. Wenn ich einen Text ersetzen möchte, wenn ein bestimmter Wert übereinstimmt, wie kann ich es erreichen? Ich versuchte mit xlst:translate()
Funktion. Aber ich kann diese Funktion nicht für jedes Element oder Attribut in XML verwenden. Gibt es also einen Wert zu ersetzen/zu übersetzen auf einmal?Ersetzen von Text in xml mit xslt
<?xml version="1.0" encoding="UTF-8"?>
<Employee>
<Name>Emp1</Name>
<Age>40</Age>
<sex>M</sex>
<Address>Canada</Address>
<PersonalInformation>
<Country>Canada</country>
<Street1>KO 92</Street1>
</PersonalInformation>
</Employee>
Ausgang:
<?xml version="1.0" encoding="UTF-8"?>
<Employee>
<Name>Emp1</Name>
<Age>40</Age>
<sex>M</sex>
<Address>UnitedStates</Address>
<PersonalInformation>
<Country>UnitedStates</country>
<Street1>KO 92</Street1>
</PersonalInformation>
</Employee>
in der Ausgabe, ersetzt Text von Kanada nach Unitedstates. Also, ohne xslt: transform() - Funktionen auf einem beliebigen Element, sollte ich in der Lage sein, Text Canada zu UnitedStates unabhängig von Level-Knoten zu ersetzen. Wo immer ich 'Canada' finde, sollte ich in der Lage sein, zu 'UnitedStates' in ganzem XML zu ersetzen. Also wie kann ich das erreichen?
Können Sie bitte angeben, was Sie versuchen zu erreichen. Wenn Sie uns einen Beispielcode mit Eingabe und gewünschter Ausgabe geben, wäre dies einfacher zu beantworten. Ist es auch möglich, XSLT 2.0 zu verwenden? In diesem Fall könnte es möglich sein, ['fn: replace()'] (http://www.w3.org/TR/xpath-functions/#func-replace) –
Ausgezeichnete Frage, +1. Sehen Sie sich meine Antwort für eine vollständige XSLT 1.0-Lösung an, die mehrere Rep-Ziele in einem Parameter akzeptiert und mehrere Ersetzungen in jedem Attribut- oder Textknoten durchführt. Außerdem wird der Unterschied mit einer XSLT 2.0-Lösung angegeben. –
@Per T, danke, ich benutze XSLT 1.0. Die Ausgabe ist ziemlich geradlinig, Für jede Eingabe XML muss ich Text ersetzen, ohne den Elementnamen anzugeben. Daher sollte er nur dann alle untergeordneten Elemente ersetzen, wenn Text übereinstimmt. –