2012-04-26 9 views
0

XSLTファイルを作成しようとしていますが、どちらのファイルにも名前空間を含めずに動作させることができますが、どちらかにインクルードするとすぐに動作しなくなります。ここでは の例を使用しています。XSLT変換では名前空間を含める方法が正しくありませんか?

マイXMLファイル

<cd> 
    <title>Empire Burlesque</title> 
    <artist>Bob Dylan</artist> 
    <country>USA</country> 
    <company>Columbia</company> 
    <price>10.90</price> 
    <year>1985</year> 
    </cd> 
    <cd> 
    <title>Empire sdf</title> 
    <artist>Bob sdf</artist> 
    <country>2</country> 
    <company>asdfs</company> 
    <price>12.90</price> 
    <year>1935</year> 
    </cd> 
</catalog> 

ファイルを変換するマイ。

<?xml version="1.0" encoding="ISO-8859-1"?> 

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" indent="yes"/> 
<xsl:template match="/"> 
    <html><body><table border="1"> 
    <tr bgcolor="#9acd32"><th>Title</th><th>Artist</th></tr> 
    <xsl:for-each select="catalog/cd"> 
    <tr> 
     <td><xsl:value-of select="title"/></td> 
     <td><xsl:value-of select="artist"/></td> 
    </tr> 
    </xsl:for-each> 
    </table></body></html> 
</xsl:template> 

</xsl:stylesheet> 

私の結果

<?xml version="1.0" encoding="UTF-8"?> 
<html> 
    <body> 
     <table border="1"> 
      <tr bgcolor="#9acd32"> 
       <th>Title</th> 
       <th>Artist</th> 
      </tr> 
      <tr> 
       <td>Empire Burlesque</td> 
       <td>Bob Dylan</td> 
      </tr> 
      <tr> 
       <td>Empire sdf</td> 
       <td>Bob sdf</td> 
      </tr> 
     </table> 
    </body> 
</html> 

ありません、私はこれまで以上に変更した場合。 私の新しいXMLファイル

<?xml version="1.0" encoding="ISO-8859-1"?> 
<catalog 
xmlns="http://www.someurl.com/v3.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.someurl.com/v3.0 ../someschema.xsl" 
> 

    <cd> 
    <title>Empire Burlesque</title> 
    <artist>Bob Dylan</artist> 
    <country>USA</country> 
    <company>Columbia</company> 
    <price>10.90</price> 
    <year>1985</year> 
    </cd> 
    <cd> 
    <title>Empire sdf</title> 
    <artist>Bob sdf</artist> 
    <country>2</country> 
    <company>asdfs</company> 
    <price>12.90</price> 
    <year>1935</year> 
    </cd> 
</catalog> 

私の新しいトランスフォームファイル。

 <?xml version="1.0" encoding="ISO-8859-1"?> 

     <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns="http://www.someurl.com/v3.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.someurl.com/v3.0 ../someschema.xsl"> 
     <xsl:output method="xml" indent="yes"/> 
     <xsl:template match="/"> 
      <html><body><table border="1"> 
      <tr bgcolor="#9acd32"><th>Title</th><th>Artist</th></tr> 
      <xsl:for-each select="catalog/cd"> 
      <tr> 
       <td><xsl:value-of select="title"/></td> 
       <td><xsl:value-of select="artist"/></td> 
      </tr> 
      </xsl:for-each> 
      </table></body></html> 
     </xsl:template> 

     </xsl:stylesheet> 

変換されたファイルにデータが出力されません。 この質問が基本的で、私はXSLTに関する経験がなく、現在私の頭の中でそれを包み込みたいと考えています。

答えて

1

XSLT 2.0では、xsl:stylesheet要素に次の属性を追加するだけです:xpath-default-namespace="http://www.someurl.com/v3.0"

XSLT 1.0の場合:xslファイル内の名前空間に修飾子を付ける必要があります。以下の例:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:ns="http://www.someurl.com/v3.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.someurl.com/v3.0 ../someschema.xsl"> 
    <xsl:output method="xml" indent="yes"/> 
    <xsl:template match="/"> 
     <html><body><table border="1"> 
      <tr bgcolor="#9acd32"><th>Title</th><th>Artist</th></tr> 
      <xsl:for-each select="ns:catalog/ns:cd"> 
       <tr> 
        <td><xsl:value-of select="ns:title"/></td> 
        <td><xsl:value-of select="ns:artist"/></td> 
       </tr> 
      </xsl:for-each> 
     </table></body></html> 
    </xsl:template> 

</xsl:stylesheet> 
+0

これを私のxsltファイルに追加しましたが、実行時に予期しない属性が表示されるようになりましたか?それを私のXMLファイルに追加しても何の違いはありませんか? – Purplemonkey

+0

はいそれを修正します:xpath-default-namespaceはxslt 2.0の機能です。ごめんなさい。 –

+0

私は縁に近づいてペニーを感じることができます:)あなたの助けに感謝します。 – Purplemonkey

関連する問題