2015-03-13 3 views
0

Мы используем XSLT, чтобы сделать наши веб-страницПрименить шаблон с данными XML

, что я пытаюсь сделать это делают шаблон с данными XML:

<xsl:for-each select="$itemview/items/item"> 
     <xsl:variable name="productitem"> 
      <productpreview product="{self::node()}" /> 
     </xsl:variable> 
     <xsl:apply-templates select="msxsl:node-set($productitem)" mode="shop"/> 
     <!--/.item--> 
     </xsl:for-each> 

Шаблон:

<xsl:template match="productpreview" mode="tshop"> 
    <div class="test"> 
    <xsl:value-of select="@product/itemcode" /> 
    </div>   
    </xsl:template> 
</xsl:stylesheet> 

Результат шаблон получает визуализированный, но структура xml ушла, я получаю данные только тогда, когда я делаю <xsl:value-of select="@product" />, и эти данные кажутся плоскими.

Можно ли отправить структуру xml с применением шаблона? как я должен это делать?

+1

Я думаю, что выполнение '' никогда не имеет смысла, поскольку атрибут не может содержать узел элемента. Вам нужно будет более подробно объяснить, как выглядит ваш вход, какие данные вы хотите хранить в своей переменной и какой из них вы хотите вывести. –

+0

Я совсем не понимаю ваш пример. Является ли ваш входной XML таблицей стилей XSL? Каков результат, который вы хотели бы получить? – potame

+0

@MartinHonnen спасибо, я новичок в xslt и задавался вопросом, соответствует ли это соглашению xslt, но, скорее, нет. благодаря! –

ответ

0

Вы не ни показали ввод XML, ни результат, который вы хотите, но если вы просто хотите хранить и обрабатывать item элементы, то я хотел бы сделать, что, как

<xsl:apply-templates select="$itemview/items/item" mode="shop"/> 

вместо

<xsl:for-each select="$itemview/items/item"> 
     <xsl:variable name="productitem"> 
      <productpreview product="{self::node()}" /> 
     </xsl:variable> 
     <xsl:apply-templates select="msxsl:node-set($productitem)" mode="shop"/> 
     <!--/.item--> 
     </xsl:for-each> 

а затем просто

<xsl:template match="item" mode="shop"> 
    <div class="test"> 
    <xsl:value-of select="itemcode" /> 
    </div>   
    </xsl:template> 
</xsl:stylesheet> 

вместо

<xsl:template match="productpreview" mode="tshop"> 
    <div class="test"> 
    <xsl:value-of select="@product/itemcode" /> 
    </div>   
    </xsl:template> 
</xsl:stylesheet> 

Я не вижу необходимости в переменной или, по крайней мере, не для фрагмента дерева результатов, вы, похоже, хотите обработать исходный ввод.

Смежные вопросы