デフォルトでは、XPath式の接頭辞のない要素名は名前空間のない要素を参照するため、式EventDocument
はローカル名が「EventDocument」で名前空間のない要素を選択します。The
<EventDocument ... xmlns="http://www.itron.com/ItronInternalXsd/1.0/">
http://www.itron.com/ItronInternalXsd/1.0/
名前空間にあるため、要素はこのパターンと一致しません。
どちらか2つの選択肢があります
- その名前空間をスタイルシートのプレフィックスにバインドしてから、XPath式でプレフィックスを使用するか、または
- (XSLT 2.0を使用していると言っているので)
xpath-default-namespace
1の例
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:itron="http://www.itron.com/ItronInternalXsd/1.0/"
version="2.0">
<xsl:template match="itron:example">
<xsl:if test="itron:EventDocument">....</xsl:if>
</xsl:template>
</xsl:stylesheet>
2の例
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xpath-default-namespace="http://www.itron.com/ItronInternalXsd/1.0/"
version="2.0">
<xsl:template match="example">
<xsl:if test="EventDocument">....</xsl:if>
</xsl:template>
</xsl:stylesheet>
私の個人的な好みは、将来スタイルシートを維持しなければならない人のための「驚き最小の原則」に基づいたオプション1です(元の作成者を含み、数か月の休憩後にコードに戻ります...)。