2012-03-09 14 views

答えて

2

XPathマッチングは、一致するXMLの「現在のノード」(つまり現在の位置)との相対的なものです。

現在のノードのすべての子要素に一致しますが、/は、現在のノードの内容に関係なく、ルートにのみ一致し、ルートのみに一致します。

また、ルートはXMLのルート要素ではなく、実際にはその上のレベルです。ルート要素はルートの子です。

あなたはこのXSLT持ちの場合:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:template match="/|*"> 
     <item name="{name()}"> 
     <xsl:apply-templates/> 
     </item> 
    </xsl:template> 

</xsl:stylesheet> 

、あなたはこのXMLに適用します:試合に

<item name=""> 
    <item name="rootElement"> 
    <item name="subElement1" /> 
    <item name="subElement2" /> 
    </item> 
</item> 

最初<item name="">対応:

<rootElement> 
    <subElement1/> 
    <subElement2/> 
</rootElement> 

をあなたがこれを取得します/(これは要素ではないので、名前を持たない)、その他はmアスタリスクは*です。

+0

同じスタイルシート内に「/」というmatcihngパターンを持つ別のxsl:template要素を配置する意味はありますか? – Bax

+0

@Baxのいずれかのテンプレートに優先順位が指定されていない限り、両方のテンプレートが同じ優先順位と一致するためエラーになります。 –

関連する問題