我有這個 XML 檔案:
<?xml version="1.0"?>
<parks>
<park>
<park_name>MCGUANE (JOHN)</park_name>
<acres>10.3</acres>
</park>
<park>
<park_name>ARMOUR (PHILIP) SQUARE</park_name>
<acres>9.05</acres>
</park>
<park>
<park_name>FULLER (MELVILLE)</park_name>
<acres>11.31</acres>
</park>
<park>
<park_name>CORNELL (PAUL) SQUARE</park_name>
<acres>8.8</acres>
</park>
<park>
<park_name>RUSSELL (MARTIN) SQUARE</park_name>
<acres>10.05</acres>
</park>
<park>
<park_name>SHERMAN (JOHN)</park_name>
<acres>57.69</acres>
</park>
<park>
<park_name>DAVIS (DR. NATHAN) SQUARE</park_name>
<acres>8.91</acres>
</park>
</parks>
我創建并使用此 XSL 檔案來轉換該 XML 檔案:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
<xsl:template match="/">
<xsl:element name="results">
<xsl:element name="names">
<xsl:apply-templates select="parks/park">
<xsl:sort select="@name" order="ascending" />
</xsl:apply-templates>
</xsl:element>
</xsl:element>
</xsl:template>
<xsl:template match="park_name" >
<xsl:element name="park">
<xsl:attribute name="name">
<xsl:value-of select="park_name" />
</xsl:attribute>
<xsl:attribute name="acres">
<xsl:value-of select="acres" />
</xsl:attribute>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
這是轉換原始 XML 檔案后我收到的檔案:
<?xml version="1.0" encoding="UTF-8"?>
<results>
<names>
<park name="" acres=""/>
10.3
<park name="" acres=""/>
9.05
<park name="" acres=""/>
11.31
<park name="" acres=""/>
8.8
<park name="" acres=""/>
10.05
<park name="" acres=""/>
57.69
<park name="" acres=""/>
8.91
</names>
</results>
我希望轉換后的檔案看起來像這樣并按字母順序排序:
<results>
<names>
<park name="PARK NAME" acres="99.99"/>
</names>
</results>
我不知道為什么轉換后的 XML 檔案中的名稱和英畝屬性不會存盤原始 XML 檔案中的值。
uj5u.com熱心網友回復:
您在幾個地方有錯誤的背景關系和選擇,請使用
<xsl:apply-templates select="parks/park">
<xsl:sort select="park_name" order="ascending" />
</xsl:apply-templates>
和
<xsl:template match="park">
<park name="{park_name}" acres="{acres}"/>
</xsl:template>
也只需考慮使用文字結果元素(例如<results><names>...)而不是 xsl:element (例如<xsl:element name="results"><xsl:element name="names">...),因為只有在運行時需要計算元素名稱時才需要后者。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/363079.html
