の目的:
<xsl:param name="pFun" select="/.."/>
パラメータ$pFun
のタイプは、ノード(またはより一般的にはリンパ節転移であること(少なくともそのタイプのシステムは非常に弱いのXPath 1.0単位)を指定することですセット)。したがって、このパラメータに渡される値は文字列または整数であってはならないことを読者は知っています。
また、このパラメータがテンプレートの呼び出しまたは適用時に明示的に指定されていない場合、デフォルト値は空のノードセットです。
この表記は、主に文書の重要性を持っています(ただし、この回答の最後にある更新を参照してください)。は、型システムが弱いXPath 1.0でのみ有効です。 XPath 2.0では、型を明示的に指定することを推奨します。これにより、XPathプロセッサはより良い型チェックを実行できるようになり、生成されたコードはより最適化され効率的になります。このような表記の他のバリエーションがあり
<xsl:param name="pFun" as="element()">
:
したがって、(この特定の場合において)のXPath 2.0/XSLT 2.0には、上記にリファクタリングする方が良いであろう。
@comment()
更新:/..
は単にドキュメントの目的にサービスを提供するよりも実用的な用途を持つ式@Michaelケイの早期冊で1も同様の表現を見つけることができます。
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/*">
<xsl:param name="pNode"/>
<xsl:copy-of select=".|$pNode"/>
</xsl:template>
</xsl:stylesheet>
任意のXML文書にこの変換を適用するようにしてください。我々の場合には、可能な限り単純な:
:今すぐを交換
Error at xsl:copy-of on line 8 of file:/(Untitled):
The value is not a node-set
Transformation failed: Run-time errors were reported
:
<t/>
結果は、次のサクソンのエラーメッセージ(他のXSLT 1.0プロセッサを搭載した同様のエラー)であります
<xsl:param name="pNode"/>
:
<xsl:param name="pNode" select="/.."/>
と再び変換を実行します。
今回は、実行時エラーなしで変換が実行されます。
結論:空のノードセットを指定する能力は実際には重要であり、式/..
はこれを達成する方法の1つです。