2009-08-20 5 views
1

У меня есть очень простой XML:XSLT Новичок и XML Массив

<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<string>One</string> 
<string>Two</string> 
</ArrayOfString> 

Как я могу перевести это в:

<ul> 
<li>One</li> 
<li>Two</li> 
</ul> 

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

Раньше я работал с: значением, но это всего лишь строки?

ответ

2

Я хотел бы сделать:

<xsl:stylesheet 
    version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
> 
    <xsl:template match="ArrayOfString"> 
    <ul> 
     <xsl:apply-templates select="string" /> 
    </ul> 
    </xsl:template> 

    <xsl:template match="string"> 
    <li> 
     <xsl:value-of select="." /> 
    </li> 
    </xsl:template> 
</xsl:stylesheet> 
1

Что-то вроде этого, чего вы хотите?

<?xml version='1.0'?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 
    <ul> 
    <xsl:apply-templates /> 
    </ul> 
</xsl:template> 
<xsl:template match="string"> 
    <li><xsl:value-of select="text()"></xsl:value-of></li> 
</xsl:template> 
</xsl:stylesheet> 

Он производит следующий вывод для меня:

<?xml version='1.0' ?> 
<ul> 
<li>One</li> 
<li>Two</li> 
</ul> 
+1

Ваш шаблон "/" работы "в результате несчастного случая" только. Вы должны сделать шаблоны явными, а не доверять неявным правилам по умолчанию, чтобы делать правильные вещи. Как только фактический шаблон для 'ArrayOfString' был определен в другом месте таблицы стилей, это решение сломается. – Tomalak

+0

Достаточно честный. Я только начал с базового шаблона XSL, который предоставил мой редактор и добавил материал, пока он не сработал :) – robertc

+0

Какой редактор вы используете? – CLiown