我需要帮助使用XSLT在注释之间获取XML内容。
XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<!-- start comment 1 -->
<book>
<title lang="it">Learning XML</title>
<price>39.95</price>
</book>
<!-- end comment 1 -->
</bookstore>
输出:
<book>
<title lang="it">Learning XML</title>
<price>39.95</price>
</book>
答案 0 :(得分:2)
你可以试试这样的......
XML输入
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<!-- start comment 1 -->
<book>
<title lang="it">Learning XML</title>
<price>39.95</price>
</book>
<!-- end comment 1 -->
</bookstore>
XSLT 1.0
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/*">
<xsl:apply-templates select="*[preceding-sibling::comment()[starts-with(normalize-space(.),'start')] and
following-sibling::comment()[starts-with(normalize-space(.),'end')]]"/>
</xsl:template>
</xsl:stylesheet>
<强>输出强>
<book>
<title lang="it">Learning XML</title>
<price>39.95</price>
</book>
答案 1 :(得分:-1)
依靠评论复制并不是很好。但是,我认为 - 你有理由选择这样做。这是我的尝试。
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="comment()">
<xsl:if test="text()='START'">
<!-- Set Flag for copying content <xsl:variable name="dummy" value-of="myPrefix:setFlag()"/> -->
</xsl:if>
<xsl:if test="text()='END'">
<!-- Reset Flag for stop copying content -->
</xsl:if>
</xsl:template>
不幸的是,您无法在XSLT中更新变量。也许,您可以尝试使用自己的Java类实例,该实例可以包含由模板检查的标记内容,以决定是否复制。