1

xsltがどのように機能するかを理解しようとして多くの時間を失っています

私はこのxmlを持っています

<?xml version="1.0" encoding="UTF-8"?>

<lvl:map xsi:schemaLocation="http://www.ohmeudeus.com lvlMl-v2.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:lvl="http://www.ohmeudeus.com">
   <name>String</name>
   <myColor>fffffffff</myColor>
</lvl:map>

そして今、xsltを使用して、文字列という単語でhtmlを作成したいと思います

だから私のxsltは次のようなものです

   <?xml version="1.0" encoding="UTF-8"?>
   <xsl:stylesheet version="2.0" 
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
   xmlns="http://www.w3.org/1999/xhtml" 
   xmlns:lvl="http://www.ohmeudeus.com lvlMl-v2.xsd">
<xsl:template match="lvl:map">
    <html>
        <head>
            <title>
                normal title
            </title>
            <link href="style.css" rel="stylesheet" type="text/css"/>
        </head>
        <body>
            The name is <xsl:value-of select="name"/>
        </body>
    </html>
</xsl:template>

</xsl:stylesheet>

結果は、次のように名前と色の両方を返します。

文字列 ffffffff

ここで何が間違っているのかわかりません...助けてください...

また、バグを見つけるのに役立つヒントを受け入れます

4

3 に答える 3

4

これは、XML の xmlns が原因です。

xmlns:lvl="http://www.ohmeudeus.com"

XSLT の xmlns と一致しません:

xmlns:lvl="http://www.ohmeudeus.com lvlMl-v2.xsd"
于 2012-04-04T18:06:03.567 に答える
1

私は2つの問題を発見しました。

  • クロージング</xsl:stylesheet>が欠けています。
  • <xmlns:lvl>にはスキーマの場所はなく、名前空間のみが必要です。

これを修正した後、The name is Stringを取得する必要があります。

于 2012-04-04T18:05:15.767 に答える
0

投稿された XML に対して固定された名前空間で投稿された XSLT を実行すると、次のようになります。これは必要な出力ではありませんか?

<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:lvl="http://www.ohmeudeus.com">
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      <title>normal title</title>
      <link href="style.css" rel="stylesheet" type="text/css" />
   </head>
   <body>The name is String</body>
</html>
于 2012-04-04T19:19:15.653 に答える