Ich wollte Platzhalter in einer XML-Steuerdatei von einer Drittanbietersoftware ersetzen.XSLT - Vergleichen Sie jeden XML-Attributwert mit einem bestimmten Attributwert.
Leider werden diese Platzhalter auch als Attributwerte in dieser XML-Datei verwendet.
Ich will Ihnen ein Beispiel geben:
<control>
<some-tag id="$wildcard1$" version="3.14">
<another-tag id="second_level">stackoverflow rocks!</another-tag>
</some-tag>
<some-tag id="foo" version="$wildcard2$"/>
<some-tag id="bar" version="145.31.1"/>
</control>
ich eine generische Transformation mit Parametern zu schreiben versucht, die Platzhalter in den Attributwerten zu ersetzen.
Mein größtes Problem war, dass ich den Attributnamen nicht kenne. Also muss ich jedes Attribut in der XML-Datei abgleichen. Das ist einfach , aber wie ich jedes Attribut mit einem bestimmten Wert (z. B. $ Wildcard $) übereinstimmen?
Beachten Sie, dass 'match = "[. = $ Wildacard] */@ *"' kann 'Spiel verkürzt werden = "@ * [. = $ wildacard]" '. Und wenn Sie wirklich XSLT Version 3.0 verwenden, können Sie anstelle der ersten Vorlage einfach ' ' deklarieren. Ich stelle auch fest, dass Ihr deklarierter Paramname 'name =" Wildcard "' ist, Ihr Code jedoch auf $ wildacard verweist. –