Xml XSLT1.0每行重复检查
我的xml中有一个小问题。如果行项目下有更多的条款(行),则第1条和第2条可能有相同的文本。(重复检查只应在每一行上,而不是在行项目上)如果行上有重复项而不是在行项目上,则应在行上检查重复项。希望你能帮助我Xml XSLT1.0每行重复检查,xml,xslt,xslt-1.0,Xml,Xslt,Xslt 1.0,我的xml中有一个小问题。如果行项目下有更多的条款(行),则第1条和第2条可能有相同的文本。(重复检查只应在每一行上,而不是在行项目上)如果行上有重复项而不是在行项目上,则应在行上检查重复项。希望你能帮助我 我想您需要键中行中的OrderLineNum以及文本 <xsl:key name="line_text" match="LineText" use="concat(../OrderLineNum, '|', Text)"/> 然后比赛就变成了这样 <xsl:temp
我想您需要键中
行中的OrderLineNum
以及文本
<xsl:key name="line_text" match="LineText" use="concat(../OrderLineNum, '|', Text)"/>
然后比赛就变成了这样
<xsl:template match="LineText[generate-id() != generate-id(key('line_text', concat(../OrderLineNum, '|', Text))[1])]" />
试试这个XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" standalone="yes" indent="yes"/>
<xsl:strip-space elements="*" />
<xsl:key name="header_text" match="HeaderText" use="Text"/>
<xsl:key name="line_text" match="LineText" use="concat(../OrderLineNum, '|', Text)"/>
<!-- Identity-Template für die nicht explizit benannten Elemente -->
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="HeaderText[generate-id() != generate-id(key('header_text', Text)[1])]" />
<xsl:template match="LineText[generate-id() != generate-id(key('line_text', concat(../OrderLineNum, '|', Text))[1])]" />
<!-- delete empty nodes -->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[not(@*|*|comment()|processing-instruction()) and normalize-space()='']"/>
</xsl:stylesheet>