1

こんにちは。

私は XML、XSD、および XSLT にかなり慣れていないので、次の問題に直面しています。XSD に次のサブ構造があり、複数回発生する可能性があります。これは、無関係なはる​​かに大きな構造の一部であり、私はしませんわかりやすくするために以下を含めます。

<xs:complexType name= "listavotosmocao">
<xs:choice maxOccurs="unbounded">
    <xs:element name="favor" type="pessoaref"/>
    <xs:element name="contra" type="pessoaref"/>
    <xs:element name="abstiveram" type="pessoaref"/>
</xs:choice>
</xs:complexType> 

<xs:complexType name="pessoaref">
<xs:attribute ref="id" type="xs:string"/>
</xs:complexType>

XLST を使用すると、要素に特定の IDREF 属性値がある場合、他の要素で同じ値が繰り返されると、stdout でメッセージがトリガーされるはずです。この目的を達成するために、XSLT で次の行を書きました。

<xsl:for-each select="votacao//favor">
   <xsl:if test="(count(preceding-sibling::contra[attribute::ref= ./@ref])
   + count(following-sibling::contra[attribute::ref=./@ref]) )> 0">
        Error
   </xsl:if>
</xsl:for-each>

IDREFに同じ値を持つ要素がある場合にのみエラーを出力するのではなく、常にhtmlファイルにエラーを出力します。言語の理解と検索の両方で、この問題とその解決方法を理解するのに役立ちませんでした. なぜこれが発生するのかについてのアイデアはありますか?

敬具

4

2 に答える 2