Элементы не попадают в документ ('') - PullRequest
1 голос
/ 15 июня 2010
<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="no" encoding="windows-1251"/>

<xsl:template match="/">
    <xsl:for-each select="document('')//w">
        <xsl:value-of select="@e"/>
    </xsl:for-each>
</xsl:template>

<my:translations xmlns:my="my:my">
    <w e="name" r="Название"/>
    <w e="model" r="Модель"/>
    <w e="year" r="Год"/>
    <w e="glass_type" r="Тип"/>
    <w e="scancode" r="Сканкод"/>
    <w e="eurocode" r="Еврокод"/>
    <w e="comment" r="Комментарий"/>
    <w e="glass_size" r="Размер"/>
    <w e="vendor" r="Производитель"/>
    <w e="trademark" r="Торговая марка"/>
    <w e="fprice" r="Цена"/>
</my:translations> 

</xsl:stylesheet>

У меня нет результата.В чем ошибка?


Извините за невнимательность при постановке вопросов.

Ответы [ 3 ]

0 голосов
/ 15 июня 2010

Наиболее вероятная проблема - в коде, который вы вежливо не показали, - это вероятное пространство имен по умолчанию .

Если это так (за исключением того, что я хорошийна гадание) это будет означать, что решение будет выглядеть следующим образом:

document('')//x:w

, где префикс x: связан с вашим пространством имен по умолчанию.

0 голосов
/ 16 июня 2010

Обновление : ОП наконец опубликовал свой код. Нет проблем в коде .

Когда предоставленное преобразование:

<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="no" encoding="windows-1251"/>

<xsl:template match="/">
    <xsl:for-each select="document('')//w">
        <xsl:value-of select="@e"/>
    </xsl:for-each>
</xsl:template>

<my:translations xmlns:my="my:my">
    <w e="name" r="Название"/>
    <w e="model" r="Модель"/>
    <w e="year" r="Год"/>
    <w e="glass_type" r="Тип"/>
    <w e="scancode" r="Сканкод"/>
    <w e="eurocode" r="Еврокод"/>
    <w e="comment" r="Комментарий"/>
    <w e="glass_size" r="Размер"/>
    <w e="vendor" r="Производитель"/>
    <w e="trademark" r="Торговая марка"/>
    <w e="fprice" r="Цена"/>
</my:translations>

</xsl:stylesheet>

выполняется с 7 процессорами XSLT 1.0 и 2 процессорами XSLT 2.0 в любом документе XML(не используется), все они дают одинаковый правильный и желаемый результат:

namemodelyearglass_typescancodeeurocodecommentglass_sizevendortrademarkfprice
0 голосов
/ 15 июня 2010

Не должно быть никаких проблем.Эта таблица стилей:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > 

<my:translations xmlns:my="my:my"> 
    <w e="name" r="Название"/> 
    <w e="model" r="Модель"/> 
    <w e="year" r="Год"/> 
    <w e="glass_type" r="Тип"/> 
    <w e="scancode" r="Сканкод"/> 
    <w e="eurocode" r="Еврокод"/> 
    <w e="comment" r="Комментарий"/> 
    <w e="glass_size" r="Размер"/> 
    <w e="vendor" r="Производитель"/> 
    <w e="trademark" r="Торговая марка"/> 
    <w e="fprice" r="Цена"/> 
</my:translations>  

<xsl:template match="/"> 
<root> 
<xsl:value-of select="count(document('')//w)"/>
</root> 
</xsl:template> 

</xsl:stylesheet> 

Это результат для любого ввода:

<root>11</root>

Редактировать : С новой опубликованной таблицей стилей я получаю ожидаемый результат:

namemodelyearglass_typescancodeeurocodecommentglass_sizevendortrademarkfprice
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...