2017-12-04 12 views
2

私はXSLTのいくつかのレガシーコードをより広く使われている言語に置き換えるために作業していましたが、私は参考にはできません。XSLT:node()? vs node()*

<xsl:variable name="following_actions" as="node()*"> 

<xsl:variable name="following_actions" as="node()?"> 

の違いは何私はアスタリスクのバージョンを見ることに慣れてる私にxsl:variableブロックのボディに指定されたいくつかの条件に一致するレコードのリストを与え、私は前に疑問符のバージョンを見たことはないと思う。

直接関連する救済援助が喜んで受け入れられました。私はXSLT 2.0、FWIWで動作していると思います。正規表現、?*、及び+指名の選択性および多重度と同様

+0

XSLT 2.0仕様のセクション9では、「as」属性はシーケンスタイプであると記載されています。シーケンス型の構文は、XPath 2.0仕様のセクション2.5.3で定義されています。 "' xsl:variable'ブロックの本文に指定された条件に一致するレコードのリストは、あなたが仕様を読むのではなく、言語の意味を推測しようとしていることを示唆しています。それは危険なアプローチのようです。 –

+0

本当に私が得たライブデータの実例といくつかの基本的な意味の間には違いはありますが、通常はロジックを解説する方法があります。そして、私が何かを最も不確かなものにしているとき、私は惜しみなく皆さんを上手く頼りにしています。私がこれまで行ってきたすべてのコードのうち、XSLTは基本的なドキュメンテーションの構造に慣れ親しんでいますので、あなたの提案するリファレンスの特異性に感謝します。 –

答えて

1

  • node() 1つのノードを意味します。
  • node()?は、0または1ノードを意味します。
  • node()+は、1つ以上のノードを意味します。
  • node()*は、0個以上のノードを意味します。