ここに私の最初の投稿 - 確かに誰かが答えを知って欲しい! 私が持っていた多くの問題の解決策を見つけることができましたが、この解決策は見つかりませんでした。同じテーマに関する本サイト上の 質問と回答は、私の問題は解決しませんでした...XSLT 2.0 Xpathエラー「ノード項目ではありません」
私は
<Format>
<TagNr>92</TagNr>
<Option>A</Option>
<Format>//[N]15d</Format>
</Format>
<Format>
<TagNr>92</TagNr>
<Option>B</Option>
<Format>//3!a/3!a/15d</Format>
</Format>
ようなXML含むフォーマットの仕様を持つTagNr +オプションは、このノードセット内のユニークな組み合わせです。
私は簡単に形式のセットを使用して作成するキーを定義した:
<xsl:key name="xx" match="//Format/Format" use="concat(../TagNr, ../Option)"/>
私は確かにだけ非特殊な要素で、このキーを使用して正しい値を得ることができます。以下のようなfor-eachまたは他の構文の中でこのキーを使用すると、「XPath 2.0の式でエラーが発生しました。ノード項目ではありません」というエラーが表示されます。
私が達成しようとするのは次のとおりです。処理される他のノードには、各文字の書式を取得するオプションの文字列があります。用(のみ)の値を取得する際に正規表現を使用して、個々の文字に
<xsl:variable name="TN"><xsl:value-of select="TagNr"/></xsl:variable>
<xsl:variable name="optList">
<xsl:analyze-string select="./Options" regex="[A-Z]">
<xsl:matching-substring>
<xsl:variable name="TNO" select="concat($TN, .)"/>
<opt>
<tag><xsl:value-of select="$TNO"/></tag>
<fmt><xsl:value-of select="key('xx', $TNO)"/></fmt>
</opt>
</xsl:matching-substring>
</xsl:analyze-string>
</xsl:variable>
分割が細かい行くと:
<Tag>
<TagNr>92</TagNr>
<Options>AB</Options>
</Tag>
私は以下の亜種の多くが、運をしようとしている。例えば opt/tagもうまくいきます。 しかし、opt/fmtを追加すると、前述のXpath式のエラーメッセージが表示されますselect = "key( 'xx'、$ TNO)"。
このサイトの別のスレッドで提案されているように、キー機能に基づいて変数を定義しようとしましたが、成功しませんでした。
誰でも手伝ってもらえますか?
スーパーの皆さん、本当に感謝しています。私は、キー関数の第3引数を正確にどのように指定するのだろうか?それはドキュメントルートを示す "/"のようなものでしょうか?私はこれに関する情報をXSLT 2.0のガイドで見つけることができません。 – Maestro13