XSLT и XPath что-то не так

Я потерял много времени, пытаясь понять, как работает 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>

и теперь я хочу сделать html, используя xslt, со словом String

так что мой 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>

результат возвращает мне имя и цвет следующим образом:

Строка

Я не понимаю, что я делаю неправильно здесь... пожалуйста, помогите мне...

Также я принимаю любые советы, которые вы должны помочь мне найти ошибки


person João Serra    schedule 04.04.2012    source источник


Ответы (3)


Это потому, что xmlns в вашем XML:

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

Не соответствует xmlns в вашем XSLT:

xmlns:lvl="http://www.ohmeudeus.com lvlMl-v2.xsd"
person Daniel Haley    schedule 04.04.2012

Я заметил 2 проблемы.

  • Закрытие </xsl:stylesheet> отсутствует.
  • У <xmlns:lvl> не должно быть местоположения схемы, только пространство имен.

После исправления вы должны получить The name is String.

person phlogratos    schedule 04.04.2012
comment
о закрытии таблицы стилей это была ошибка вставки переполнения стека. я удалил lvlMl-v2.xsd из xmlns:lvl и ничего не изменил, но это правда, что это была ошибка - person João Serra; 04.04.2012

Когда я запускаю опубликованный XSLT с фиксированным пространством имен для опубликованного XML, я получаю следующее. Разве это не требуемый результат?

<?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>
person Kevan    schedule 04.04.2012
comment
Когда я запускаю опубликованный XLST с фиксированным пространством имен по отношению к опубликованному XML, я получаю следующее. — Единственной проблемой было пространство имен. - person Daniel Haley; 05.04.2012