输入XML:
<?xml version="1.0" encoding="UTF-8"?>
<LearningStandards>
<CoreStandardVersion>1.3</CoreStandardVersion>
<LearningStandardItem xml:lang="en" RefID="B7058B531113">
<RefURI>http://ramstand.org/KBL-ELvier/DDSS/L/1/</RefURI>
</LearningStandardItem>
<LearningStandardItem xml:lang="en" RefID="E2D9EF8B042C091">
<RefURI>http://ramstand.org/KBL-ELvier/DDSS/L/2/</RefURI>
</LearningStandardItem>
<LearningStandardItem xml:lang="en" RefID="B7058B531113">
<RefURI>http://ramstand.org/KBL-ELvier/DDSS/L/1/</RefURI>
</LearningStandardItem>
</LearningStandardItem>
<LearningStandardItem xml:lang="en">
<RefURI>http://ramstand.org/KBL-ELvier/DDSS/L/3/</RefURI>
</LearningStandardItem>
</LearningStandards>
转换XSLT:
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="LearningStandards">
<topic id="x1" xml:lang="en-US" outputclass="KKSSS-DITA">
<title>KKSSS</title>
<body>
<xsl:apply-templates/>
</body>
</topic>
</xsl:template>
<xsl:template match="CoreStandardVersion"/>
<xsl:template match="LearningStandardItem">
<bodydiv outputclass="LearningStandardItem">
<xsl:apply-templates select="@* | node()"/>
</bodydiv>
</xsl:template>
<xsl:template match="LearningStandardItem/@xml:lang"/>
<xsl:template match="@RefID">
<xsl:attribute name="id">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>
<xsl:template match="@RefID">
<xsl:if test=". != ''">
<xsl:attribute name="id"><xsl:value-of select="."/></xsl:attribute>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
输出XML
<?xml version="1.0" encoding="UTF-8"?>
<topic id="x1" xml:lang="en-US" outputclass="KKSS-DITA">
<title>KKSSS</title>
<body>
<bodydiv outputclass="LearningStandardItem"
id="B7058B531113">
<p outputclass="RefURI">http://ramstand.org/KBL-ELvier/DDSS/L/1/</p>
</bodydiv>
<bodydiv outputclass="LearningStandardItem"
id="E2D9EF8B042C091">
<p outputclass="RefURI">http://ramstand.org/KBL-ELvier/DDSS/L/2/</p>
</bodydiv>
<bodydiv outputclass="LearningStandardItem"
id="B7058B531113">
<p outputclass="RefURI">http://ramstand.org/KBL-ELvier/DDSS/L/1/</p>
</bodydiv>
<bodydiv outputclass="LearningStandardItem">
<p outputclass="RefURI">http://ramstand.org/KBL-ELvier/DDSS/L/3/</p>
</bodydiv>
</body>
</topic>
需要输出以下条件:
1)如果 ID 没有值,则不处理该元素。
2)如果 ID 是先前<LearningStandardItem>
元素的副本,则不处理该元素。
3)否则处理<LearningStandardItem>
预期输出XML:
<?xml version="1.0" encoding="UTF-8"?>
<topic id="x1" xml:lang="en-US" outputclass="KKSSS-DITA">
<title>KKSSS</title>
<body>
<bodydiv outputclass="LearningStandardItem"
id="B7058B531113">
<p outputclass="RefURI">http://ramstand.org/KBL-ELvier/DDSS/L/1/</p>
</bodydiv>
<bodydiv outputclass="LearningStandardItem"
id="E2D9EF8B042C091">
<p outputclass="RefURI">http://ramstand.org/KBL-ELvier/DDSS/L/2/</p>
</bodydiv>
</body>
</topic>
请帮助我。
答案 0 :(得分:2)
您可以使用下面的模板跳过没有LearningStandardItem
或空值@RefID
或重复@RefID
的{{1}}元素:
@RefID