我试图从更大的元数据文件中过滤一些书籍记录。我只需要在该字段中具有特定术语的记录"权利"。如果该字段包含"インターネット公开"它应该是结果所有其他记录是真实的。
示例xml:
<ListRecords>
<record>
<header>
</header>
<metadata>
<title>農林時報</title>
<creator>農林省</creator>
<rights>国立国会図書館</rights>
</metadata>
</record>
<record>
<header>
</header>
<metadata>
<title>大和本草</title>
<creator>貝原篤信</creator>
<rights>インターネット公開(保護期間満了)</rights>
</metadata>
</record>
</ListRecords>
我的xsl:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/TR/REC-html40">
<xsl:output method="xml" encoding="utf-16" indent="no" />
<xsl:template match="@*|node()">
<xsl:if test="contains(current(), 'インターネット公開')">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
结果应该显示孔xml结构,但只显示具有指定术语的记录。
如果有任何帮助,我将不胜感激。
答案 0 :(得分:0)
您的尝试只会复制包含自己文本值中指定字符串的元素。如果您想复制整个记录,为什么不做简单的操作:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/ListRecords">
<xsl:copy>
<xsl:copy-of select="record[contains(metadata/rights, 'インターネット公開')]"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>