我遇到这样的情况:XML标记具有需要在XSLT中解析的HTML代码。这是XML示例:
<note>
<text><p>This is a paragraph.</p><p>This is another paragraph.</p></text>
</note>
我希望将嵌入的段落元素存储在不同的变量中。
This is a paragraph.
应该存储在一个变量中,This is another paragraph.
应该存储在另一个变量中。
可以帮忙吗?
答案 0 :(得分:2)
XSLT 3.0支持使用parse-xml
https://www.w3.org/TR/xpath-functions/#func-parse-xml解析XML文档或使用parse-xml-fragment
https://www.w3.org/TR/xpath-functions/#func-parse-xml-fragment解析XML片段,在早期版本中,您将不得不依赖提供的特定于处理器的扩展或可实施的
您的转义代码看起来像XHTML片段,因此应该可以像https://xsltfiddle.liberty-development.net/bFDb2CQ中那样用parse-xml-fragment
进行解析
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="#all"
version="3.0">
<xsl:mode on-no-match="shallow-copy"/>
<xsl:output method="html" indent="yes" html-version="5"/>
<xsl:template match="text">
<div>
<xsl:variable name="contents" select="parse-xml-fragment(.)"/>
<xsl:variable name="p1" select="$contents/p[1]"/>
<xsl:variable name="p2" select="$contents/p[2]"/>
<xsl:sequence select="$p1, $p2"/>
</div>
</xsl:template>
</xsl:stylesheet>