2009-04-22 3 views
2

Я использую преобразование Xsl для отображения данных Xml как Html.Интервал преобразования XSL

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:ms="urn:schemas-microsoft-com:xslt" 
xmlns:util="urn:the-xml-files:xslt"> 
<xsl:output method="xml" indent="yes" 
    omit-xml-declaration="yes" encoding="utf-8"/> 

<xsl:template match="/"> 
    <xsl:for-each select="/Categories/Category"> 
     <li class="c"> 
     <a class="d"> 
      <xsl:attribute name="id">cat_<xsl:value-of select="categoryid"/></xsl:attribute> 
     </a> 
     </li> 
    </xsl:for-each> 
</xsl:template> 
</xsl:stylesheet> 

Если атрибут ID литиево элемент выберет не в одной строке, процессор XSL пополнит значение атрибута с пробелами, которые полностью ломает JavaScript на переднем конце.

Конечно, Visual Studio всегда будет переформатировать множество определений в одной строке, поэтому, если я что-то изменил, мне нужно удалить пробелы вручную.

Как удалить ненужные пробелы из элемента? Должен ли я делать xsl: copy с xsl: strip-space или есть ли лучшие решения? :)

+0

Предоставленный XSLT-код не является хорошо сформированным и очень нечитаемым –

+0

Да, и обратите внимание, что «для каждого» предназначено для веников. Реальные мужчины используют «apply-templates». Просто подумал, что ты хочешь знать. – Ishmael

+0

Dimitre, попробуйте вставить образец кода в Chrome с помощью венгерской клавиатуры;) Ishmael: только если чрезмерное усложнение крайне необходимо .. – balint

ответ

2

В дополнении к элегантному решению Dimitre, в следующей многословную версия доступна:

<a class="d"> 
    <xsl:attribute name="id"> 
     <xsl:text>cat_</xsl:text> 
     <xsl:value-of select="categoryid"/> 
    </xsl:attribute> 
</a> 

Я упоминаю об этом только потому, что <xsl:text> часто пропускается и может быть весьма полезным. XSL - это подробный язык.

4

Решения простого:

Вместо:

 <a class="d"> 
     <xsl:attribute name="id">cat_<xsl:value-of select="categoryid"/></xsl:attribute> 
    </a> 

Использование:

 <a class="d" id="cat_{categoryid}"/> 
+0

Dimitre, где можно найти дополнительную информацию об этом коротком режиме? – balint

+0

@balint Он называется AVT (Шаблоны атрибутов-значений) и определен здесь: http://www.w3.org/TR/xslt#attribute-value-templates –

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