2017-12-16 23 views
2

xsltを使用してxmlから少数のタグの値を取得しようとしています。 マイList.xmlの:名前空間を持つXSLT選択ノード

<a> 
<na:Data xmlns:na="http://some_site.com#" Ref="http://another_site.com" 
    Key="value"> 
    <b> 
    <c>some_c_attrib</c> 
    <d>some_d_attrib</d> 
    <e>some_e_attrib</e> 
    <f>some_f_attrib</f> 
    <g>some_g_attrib</g> 
    </b> 
    <h> 
    <i>some_i_attrib</i> 
    <j>some_j_attrib</j> 
    </h> 
</na:Data> 
<da:Newtag xmlns:da="http://new_site.com"> 
    <k name="http://new_new_site.com"/> 
</da:Newtag> 
</a> 

マイlist.xsl:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:my="http://some_site.com#" 
    exclude-result-prefixes="my"> 
    <xsl:output method="html" encoding="UTF-8" /> 
    <xsl:template match="/"> 
     <html> 
      <body> 
       <xsl:for-each select="https://stackoverflow.com/a/my:Data/my:e"> 
        <h1><xsl:value-of select="f" /></h1> 
       </xsl:for-each> 
      </body> 
     </html> 
    </xsl:template> 
</xsl:stylesheet> 

私が手出力は次のようになります。

<html> 
    <body> 
    <h1/> 
    </body> 
</html> 

私は出力になりたい:

<html> 
    <body> 
    <h1>some_f_attrib</h1> 
    </body> 
</html> 

同様に私も取得したいc、d、eなどの属性値。名前空間に問題があります。名前空間がなければ、属性値にアクセスできます。私は、それぞれの選択肢の価値と価値について間違っていると思います。

ありがとうございました

+0

?名前空間接頭辞は* na *でなければなりません。 xsltのルートでそれを試してください。 – Parfait

+0

xslファイルの 'my​​'はエイリアスと似ています。私はそれが任意の名前であり、xmlファイルと同じである必要はないと思います。 – Roy

答えて

1

2つの問題があります。

  1. まず、f要素がb、ないeの子です。
  2. eの子であっても、e要素は名前空間にバインドされておらず、XPathはmy:eをアドレス指定しようとしています。

にあなたのために、それぞれにXPathを調整します。

*私*から来たん
<xsl:for-each select="https://stackoverflow.com/a/my:Data/b"> 
    <h1><xsl:value-of select="f" /></h1> 
</xsl:for-each> 
関連する問題