这个问题很明显被多次询问,但我找不到任何帮助。
我想替换所有
<br>
到
<br />
在某些节点中。
XML
<paragraphs>
<paragraph><![CDATA[Lorem ipsum dolor sit amet, consetetur sadipscing elitr.<br>sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat.<br>sed diam voluptua.<br>At vero eos et accusam et justo duo dolores et ea rebum.]]>
</paragraph>
<paragraphs>
XSL
<xsl:template match="paragraph">
<paragraph>
<xsl:attribute name="type">public</xsl:attribute>
<xsl:value-of select="replace(., '\<br\>', '\<br /\>')"/>
</paragraph>
</xsl:template>
不幸的是Saxon退出了
SXXP0003: Error reported by XML parser: The value of attribute "select" associated with an element type "null" must not contain the '<' character. org.xml.sax.SAXParseException: The value of attribute "select" associated with an element type "null" must not contain the '<' character.
我试图逃避&#34; \&#34;但是我无法做到。
有什么想法吗?
答案 0 :(得分:1)
以这种方式尝试:
<xsl:template match="paragraph">
<paragraph type="public">
<xsl:value-of select="replace(., '<br>', '<br/>')"/>
</paragraph>
</xsl:template>
答案 1 :(得分:0)
您无法使用,也不需要XSLT。您需要一个生成XHTML的纠错HTML解析器,例如NekoHTML,它是Apache Xerces上的一个薄层。
答案 2 :(得分:0)
如果将output属性设置为HTML,将生成不带斜杠的<br>
标记。
但是,如果将output属性设置为XML,变换器将自动关闭空标记,因此请使用:
<xsl:output method="xml"/>