Veröffentlichungsdatum: 08. Juli 2010
Änderungsdatum: 17. April 2012
xsl xsl-element copy-of value-of wsl unescapeCDATA
Dieser Artikel beschreibt die Unterschiede beim Einsatz der XSL-Elemente copy-of und value-of und geht dabei auch auf das WSL-Tag unescapeCDATA ein.
Um Inhalte eines XML-Dokumentes über die XSLT-Transformation in das Ausgabedokument zu bekommen, gibt es unter anderem folgende XSL-Elemente:
Diese XSL-Elemente werden z.B. in der SELFHTML-Dokumentation (siehe weiterführende Links) oder anderen Dokumentationen (W3C, etc.) genauer beschrieben. Die vorige Liste stellt einen Auszug aus der Dokumentation des SELFHTML-Projektes dar (kursive Textpassage).
Die nachfolgenden Beispiele demonstrieren die Unterschiede beim Einsatz der entsprechenden XSL-Elemente und der verwendeten Attribute.
... <wd:fragment id="text" type="text.standard"><![CDATA[<p>Anwendungsbeispiel zu copy-of & value-of!</p>]]></wd:fragment> ...
Dieses Fragment wird nun über unterschiedliche XSL-Aufrufe ausgelesen, was die Unterschiede der verwendeten XSL-Elemente demonstriert.
... <xsl:copy-of select="wd:fragment[@id = 'text']/text()|wd:fragment[@id = 'text']/*"/> ... <!-- Erzeugt folgenden vom Browser interpretierten Quelltext: <p>Anwendungsbeispiel zu copy-of & value-of!</p> Das &-Zeichen wird zwar XHTML-Konform ausgegeben, allerdings werden die HTML-Tags als solche in der Webseite angezeigt (<p>...</p>). -->
... <wsl:unescapeCDATA><xsl:copy-of select="wd:fragment[@id = 'text']/text()|wd:fragment[@id = 'text']/*"/></wsl:unescapeCDATA> ... <!-- Erzeugt folgenden vom Browser interpretierten Quelltext: <p>Anwendungsbeispiel zu copy-of & value-of!</p> Das &-Zeichen wird nicht XHTML-Konform ausgegeben, weshalb die Seite nicht valide ist. Die HTML-Tags werden korrekt umgesetzt und interpretiert. -->
... <xsl:value-of select="wd:fragment[@id = 'text']"/> ... <!-- Erzeugt folgenden vom Browser interpretierten Quelltext: <p>Anwendungsbeispiel zu copy-of & value-of!</p> -->
... <wsl:unescapeCDATA><xsl:value-of disable-output-escaping="yes" select="wd:fragment[@id = 'text']"/></wsl:unescapeCDATA> ... <!-- Erzeugt folgenden vom Browser interpretierten Quelltext: <p>Anwendungsbeispiel zu copy-of & value-of!</p> Das &-Zeichen wird nicht XHTML-Konform ausgegeben, weshalb die Seite nicht valide ist. Die HTML-Tags werden korrekt umgesetzt und interpretiert. -->
... <xsl:value-of disable-output-escaping="yes" select="wd:fragment[@id = 'text']"/> ... <!-- Erzeugt beim Aufruf über den Browser einen Fehler: Warning: DOMDocument::loadXML() [domdocument.loadxml]: xmlParseEntityRef: no name in Entity, ... -->
Zeichen innerhalb von Textfeldern sollten immer korrekt und somit XHTML-Konform gesetzt werden, damit diese über xsl:value-of valide ausgegeben werden können.