2009-08-20 110 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?

以前我使用過a:value,但這些只是字符串?

回答

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 2009-08-20 11:45:47

+0

夠公平的。我剛開始使用我的編輯器提供的基本XSL模板,並添加了東西,直到它工作:) – robertc 2009-08-20 11:57:38

+0

您使用哪種編輯器? – CLiown 2009-08-20 12:29:05