0

xsl:paramが「キーワードxsl:paramは名前空間http://www.w3.org/TR/WD-xslで使用されていない可能性があります」というエラーを表示する理由がわかりません。次のxslコードで、スタイルシート宣言を使用します。

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="uri:xsl">

与えられたxml

<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
    <cd n="a">
        <title>Empire Burlesque</title>
        <artist>Bob Dylan</artist>
        <country>USA</country>
        <company>Columbia</company>
        <price>10.90</price>
        <year>1985</year>
    </cd>
</catalog>

およびxslコード

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="uri:xsl">

<xsl:param name="test" select="'a'"/>

<xsl:template match="/">
  <html>
  <body>
    <h2>My CD Collection</h2>
    <table border="1">
      <tr bgcolor="#9acd32">
        <th>Title</th>
        <th>Artist</th>
      </tr>
      <xsl:for-each select="catalog/cd">

<xsl:choose>
    <xsl:when match=".[@n = $test]">
      <tr>
        <td><xsl:value-of select="title" /></td>
        <td><xsl:value-of select="artist" /></td>
      </tr>
    </xsl:when>
    <xsl:otherwise>

    </xsl:otherwise>
</xsl:choose>

      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

スタイルシート宣言を変更できません。w3cのドキュメントを見ると、paramをスタイルシートの子として宣言することが許可されており、テンプレートに含める必要はありません。

4

2 に答える 2

2

あなたのものが名前空間http://www.w3.org/1999/XSL/Transformにない場合、それはXSLTスタイルシートではなく、他に何があるのか​​わかりません。XSLTプロセッサはそれで有用なことは何もしません。「uri.xsl」という名前空間を持つある種の言語があるかもしれませんが、ある場合、私はそれに出くわしたことがなく、それが何であるかわかりません。

于 2012-06-19T21:07:15.407 に答える
1

xsltに3つのエラーがあります。

1)変換の開始時に2つの処理命令があります。ある場合は、1つだけ使用する必要があります。

2)スタイルシート要素の名前空間は次のようになりますhttp://www.w3.org./1999/XSL/Transform

3)スタイルシートのバージョン属性がありません

これらの点は別として、スタイルシートは機能するはずです。

于 2012-06-19T19:47:29.607 に答える