在xml中向同一父项内的重复子项抛出异常

时间:2017-10-25 04:28:40

标签: xml xslt xml-parsing xslt-1.0

我正在使用以下格式的XML。

示例XML:

{
    <message>
        <parent1>
          <child>A</child>
          <child>B</child>
          <child>C</child>
        </parent1>
        <parent2>
          <child>A</child>
          <child>B</child>
          <child>B</child>
        </parent2>
    </message>
}

期望的输出:

  

例外:父2包含重复的孩子。

请帮我编写XSLT代码以对XML进行验证。

更新

这是我到目前为止所做的:

<xsl:stylesheet version="1.0" 
                xmlns:xsl="w3.org/1999/XSL/Transform">
  <xsl:output method="xml" encoding="utf-8" indent="no"/> 
  <xsl:template match="parent"> 
    <xsl:copy-of select="*" />  
    <xsl:for-each select="child"> 
      <xsl:variable name="node_child" select="text()"/> 
      <xsl:variable name="numEntries" 
                    select="count(../child[text()=$node_child])"/> 
      <xsl:if test="$numEntries &gt; 1"> 
        <xsl:text>Child value of </xsl:text>
        <xsl:text> has multiple entries &#xa;</xsl:text> 
      </xsl:if> 
    </xsl:for-each> 
  </xsl:template> 
</xsl:stylesheet>

1 个答案:

答案 0 :(得分:0)

<xsl:template match="child
                     [some $s in preceding-sibling::* 
                     satisfies deep-equal(., $s)]">
  <xsl:message terminate="yes"
    >Dying:  duplicate element <xsl:copy-of select="."/>
</