1
我找不出如何找到相同類型的嵌套元素。通常情況下,如果我有7個級別的標題,並且希望用XSLT將它們轉換爲h1-h7標題,那麼如何使用XPath選擇它們 - 我無法做出比div/div/div/head
更好的選擇,但這看起來非常笨拙。使用XPath查找嵌套元素(相同類型)
我找不出如何找到相同類型的嵌套元素。通常情況下,如果我有7個級別的標題,並且希望用XSLT將它們轉換爲h1-h7標題,那麼如何使用XPath選擇它們 - 我無法做出比div/div/div/head
更好的選擇,但這看起來非常笨拙。使用XPath查找嵌套元素(相同類型)
這種轉變:
<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>
哇,不像我想的那麼容易!非常有趣,非常感謝。 –