這是我謙虛的XML文件:哦不,不是再次出現「XSLT 1.0查找重複」任務。但我真正的意思是
<choice>
<question>
<text>one</text>
<answer>
<text>2</text>
</answer>
<answer>
<text>2</text>
</answer>
</question>
<question>
<text>two</text>
<answer>
<text>d</text>
</answer>
</question>
<question>
<text>three</text>
<answer>
<text>1</text>
</answer>
<answer>
<text>2</text>
</answer>
</question>
</choice>
而這正是我試圖找出是否有在「問題」一式兩份文本:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="1.0">
<xsl:template match="/choice">
<xsl:variable name="ok" select="count(question/text)=count(question/text[not(.=following::text)])"/>
<xsl:copy-of select="$ok"/>
<xsl:if test="not($ok)">
<xsl:message terminate="yes">
Error: Duplicate Question
</xsl:message>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
工作正常 - 但如何我是否會發現答案部分是否有重複(本例中的問題 - 重複「2」)?
抱歉打擾,但我真的被困在這裏...
這可能會幫助:http://stackoverflow.com/questions/10216035/how-to-check-duplicate-element-values-using-xslt – kjhughes
請出示的情況下,預期的輸出1)有重複和2)如果沒有重複的話。謝謝。 –
@MathiasMüller:我只對一個布爾變量感興趣,如果存在重複項,那麼它包含「false」,如果沒有,則包含「true」。在這個例子中,我只是在檢測到有重複的情況後才放棄不正當行爲。我對重複數量和價值都不感興趣。 –