當這個XSLT:
<pens>
<pen id="A">
<user name="USER1" email="USER1EMAIL"/>
</pen>
<pen id="B">
<user name="USER2" email="USER2EMAIL"/>
</pen>
<pen id="C"/>
<pen id="D">
<user name="USER3" email="USER3EMAIL"/>
</pen>
</pens>
......想要的結果產生:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output omit-xml-declaration="no" indent="yes" method="text" />
<xsl:strip-space elements="*" />
<xsl:template match="user[@name][@email]">
<xsl:value-of select="parent::*/@id" />
<xsl:text> - </xsl:text>
<xsl:value-of select="@name" />
<xsl:text> </xsl:text>
</xsl:template>
</xsl:stylesheet>
......是對你的原始XML應用
A - USER1
B - USER2
D - USER3
說明:
我們設置<xsl:output>
元素的@method
屬性有text
值(因爲我們感興趣的是文本的結果)。
一個模板匹配<user>
具有@name
和@email
屬性定義的元素。
當一個這樣的<user>
元件被發現,它的父元素的屬性@id
,破折號,元素的@name
屬性的值,最後,一個換行字符的我們輸出的值。
將此結果保存到文件取決於您使用的是哪個XSLT處理器。如果你通過命令行(例如,一路xsltproc
一樣)運行轉換,你可以做這樣的事情:
$ xsltproc t.xsl input.xml > output.xml
什麼語言,你想用這樣做呢? –
我想使用XSLT來實現這個 –