3 Stimmen

Umwandlung von gemischten XML-Knoten mit disable-output-escaping

Zu dieser Frage wurden schon einige Varianten gepostet, aber ich konnte keine finden, die sich mit dem Basisfall befassen. Ich dachte, es wäre gut, eine kanonische Antwort auf die einfachste Version des Problems zu haben. Diese Frage geht von xslt 1.0 aus.

Ich habe ein XML-Dokument, das gemischte Knoten enthält, z. B.:

<paragraph>
     This is some text that is <bold>bold</bold> 
     and this is some that is <italic>italicized.</italic>
</paragraph>

Normalerweise würde ich eine Umwandlung verwenden, die in etwa so aussieht:

<xsl:template match="bold">
    <b><xsl:apply-templates/></b>
</xsl:template>
<xsl:template match="italic">
    <i><xsl:apply-templates/></i>
</xsl:template>
<xsl:template match="paragraph">
    <p><xsl:apply-templates/></p>
</xsl:template>

was gut funktioniert, bis ich disable-output-escaping="yes" verwenden möchte, was ein Attribut von xsl:value-of ist. Gibt es eine Möglichkeit, den Textteil des gemischten Knotens auszuwählen, auf den ich das value-of unabhängig von den eingebetteten Knoten anwenden kann?

Das funktioniert natürlich nicht, weil ich dann die Kindknoten verlieren würde:

<xsl:template match="paragraph">
    <p><xsl:value-of select="." disable-output-escaping="yes"/></p>
</xsl:template>

Ich weiß, dass die Tatsache, die ich versuche, dies zu tun, wahrscheinlich ein inhärentes Problem in der Art und Weise darstellt, wie ich das XML behandle, aber ein Großteil des XML wird ziemlich schnell durch (vertrauenswürdige) Benutzereingaben generiert, und ich versuche, eine Menge zusätzlichen Verarbeitungscode zwischen dem XML->XSLT->HTML-Formular (wenn möglich) zu vermeiden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X