Janine S.: Template Match über mehrere Tags

Beitrag lesen

Hallo allerseits,

ich habe bereits einige XSL-Erfahrung, komme hierbei allerdings an meine Grenzen des Vorstellungsvermögens und hoffe, dass ihr meinen Kopfknoten lösen könnt 😉

Ich habe im Word-ML folgende (ideale) XML-Quellstruktur:

<w:p>
	<w:r>Geltungsbereich:</w:r>
	<w:r>[validity]</w:r>
</w:p>

Über meine XSL will ich den <w:r>[validity]</w:r> im gesamten Dokument finden und den Inhalt [validity] durch einen Wert aus einer Variablen ersetzen. Das funktionierte bisher immer gut mit <xsl:template match="//w:r[.='[validity]']"> und die weiteren Schritte innerhalb des Templates.

Da Word allerdings doof ist und der XML-Code beim Öffnen mit Microsoft immer wieder zerschossen wird, kann ich u.a. auch folgende Quellstrukturen haben:

<w:p>
	<w:r>Geltungsbereich:</w:r>
	<w:r>[</w:r>
	<w:r>validity]</w:r>
</w:p>

oder

<w:p>
	<w:r>Geltungsbereich:</w:r>
	<w:r>[</w:r>
	<w:r>validity</w:r>
	<w:r>]</w:r>
</w:p>

Mein <xsl:template match="//w:r[.='[validity]']"> funktioniert an dieser Stelle also nicht mehr. Ich könnte auch nach <xsl:template match="//w:r[.='validity']"> (ohne eckige Klammern) suchen, doch dann habe ich den 2. Fall nicht abgebildet und bekomme die überflüssigen Klammern in den andern <w:r> nicht gleich mit herausgefiltert...

Vielleicht könnte man auch nach <xsl:template match="//w:p[contains(.//w:r,'Geltungsbereich:')]"> suchen und das gesamte w:p ersetzen, erscheint mir aber etwas umständlich. Gibt es dafür nicht eine smartere Lösung?

Ich freue mich auf eure Antworten 😀

Grüße Janine

akzeptierte Antworten