2015-12-02 77 views
1

我找不出如何找到相同類型的嵌套元素。通常情況下,如果我有7個級別的標題,並且希望用XSLT將它們轉換爲h1-h7標題,那麼如何使用XPath選擇它們 - 我無法做出比div/div/div/head更好的選擇,但這看起來非常笨拙。使用XPath查找嵌套元素(相同類型)

回答

1

這種轉變

<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="node()|@*"> 
     <xsl:copy> 
     <xsl:apply-templates select="node()|@*"/> 
     </xsl:copy> 
    </xsl:template> 

    <xsl:template match="div/head"> 
     <xsl:element name="h{count(ancestor::div)}"> 
     <xsl:apply-templates select="node()|@*"/> 
     </xsl:element> 
    </xsl:template> 
</xsl:stylesheet> 

當這個XML文檔施加:

<div> 
    <head>1</head> 
    <div> 
     <head>2-1</head> 
     <div> 
      <head>3-1</head> 
     </div> 
    </div> 
    <div> 
     <head>2-2</head> 
    </div> 
</div> 

產生想要的,正確的結果

<div> 
    <h1>1</h1> 
    <div> 
     <h2>2-1</h2> 
     <div> 
      <h3>3-1</h3> 
     </div> 
    </div> 
    <div> 
     <h2>2-2</h2> 
    </div> 
</div> 
+0

哇,不像我想的那麼容易!非常有趣,非常感謝。 –