2015-11-15 45 views
1

我想呈現與嵌套部分分開的xml的非嵌套部分。 E.g是有可能使這個XMLXSL如何分別處理子元素?

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="para.xsl"?> 
<paragraph>Introduction 
    <list> 
    <element>First</element> 
    <element>Second</element> 
    </list> 
</paragraph> 

<p>Introduction 
<ul> 
    <li>First</li> 
    <li>Second</li> 
    </ul> 
</p> 

我的樣式表(不工作)是

<?xml version="1.0" encoding="UTF-8"?>  
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:template match="/"> 
    <xsl:apply-templates select="paragraph" /> 
</xsl:template> 

<xsl:template match="paragraph" > 
    <p><xsl:value-of select="*[not(list)]"/></p> 
    <xsl:apply-templates select="list" /> 
</xsl:template> 

<xsl:template match="list" > 
    <ul><xsl:apply-templates select="element"/></ul> 
</xsl:template> 

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

它呈現爲

<p> 
    First 
    Second 
    </p> 
<ul> 
<li>First</li> 
<li>Second</li> 
</ul> 
+1

注意,無論是在HTML 4也不在HTML5(http://www.w3.org/TR/html5/grouping-content.html# p元素)允許'p'元素包含像'ul'元素那樣的塊元素,因此XSLT可以很容易地創建您請求瀏覽器的HTML解析器的樹,可能會在它完成時返回'p'元素遇到'ul'元素。 –

回答

1

我想從 嵌套單獨渲染XML的非嵌套部分部分。

沒有與嵌套沒有問題的,因爲這是採取的XSLT processing modelXSLT built-in templates護理 - 閱讀更多關於這些主題或看一場XSLT training course。您只需重寫內置模板,如下所示。


因爲這作爲簡單:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 
<xsl:strip-space elements="*"/> 

    <xsl:template match="paragraph"> 
    <p><xsl:apply-templates/></p> 
    </xsl:template> 

    <xsl:template match="list"> 
    <ul><xsl:apply-templates/></ul> 
    </xsl:template> 

    <xsl:template match="element"> 
    <li><xsl:apply-templates/></li> 
    </xsl:template> 
</xsl:stylesheet>