0

私はxmlに精通していません。以下のような構造の xml ドキュメントがあります。

<?xml version="1.0" encoding="UTF-8"?>
<a:b xmlns="something">
  <a:c>
    <d>
      <e>
        <item>item1</item>
        <item>item1</item>
        <item>item1</item>
       </e>
     </d>
   <a:c>
 <a:b>

以下のように、ノード「e」を取得して、xslt でその子アイテムを取得したいと考えています。

<xsl:variable name="Product" select="document('itemList.xml')/node()[1]/node()[0]/node()[0]/node()[0]"/>

しかし、それは機能していません。適切な方法をお勧めします。また、最初のノードは node()[0] または node()[1] によって参照されますか? xml のこのノードの概念をよく理解するための記事へのリンクは大歓迎です。

4

2 に答える 2

1

aXML には、URI にバインドされたプレフィックスがありません。それが修正されたと仮定します。

a:b/a:c/x:d/x:e

xがバインドされているときにノードを取得しますsomething

于 2013-01-24T08:09:01.947 に答える
0

指定した XML は現在有効ではありません。デフォルトの名前空間を宣言していますが、a:名前空間を宣言していません。次のようなものから始める必要があります。

<a:b xmlns="something" xmlns:a="somethingElse">

XSLT で名前空間を宣言し、その名前空間を prefixにa関連付けた場合、次の方法でノードにアクセスできます。somethingse

/a:b/a:c/s:d/s:e

単にノードの位置に基づいてノードにアクセスしたい場合は、これを行うことができますが、これは通常はあまり良い方法ではありません。

/*[1]/*[1]/*[1]/*[1]

あなたの質問に答えるために、XPath は 1 インデックス ベースであるため、任意の選択の最初の項目は [1] でアクセスされます。

于 2013-01-24T08:25:41.207 に答える