こんにちは。
私は 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ファイルにエラーを出力します。言語の理解と検索の両方で、この問題とその解決方法を理解するのに役立ちませんでした. なぜこれが発生するのかについてのアイデアはありますか?
敬具