我有一個xpaths的源和目標列表,其中每個列表都基於他們自己的模式。對於每個源路徑都存在一個目標路徑。例如,我有源列表[/ shiporder/shipfrom/name,/ shiporder/address/city]和目錄列表[/ root/Seller/Country],其中列表的順序連接源與目標路徑的路徑。現在我可以創建簡單易讀的樣式表,它應用每個源路徑並針對目標路徑創建輸出。對於/運送訂單/ shipfrom /名稱stylesheet是:通過xpath列表創建xml文件
<xsl:template match="/">
<xsl:apply-templates select="shiporder"/>
</xsl:template>
<xsl:template match="/shiporder">
<root>
<xsl:apply-templates select="shipfrom"/>
</root>
</xsl:template>
<xsl:template match="/shiporder/shipfrom">
<Seller>
<xsl:apply-templates select="name"/>
</Seller>
</xsl:template>
<xsl:template match="/shiporder/shipfrom/name">
<Country>
<xsl:apply-templates select="text()"/>
</Country>
</xsl:template>
和/shiporder/address/city
的stylesheet是:
<xsl:template match="/">
<xsl:apply-templates select="shiporder"/>
</xsl:template>
<xsl:template match="/shiporder">
<root>
<xsl:apply-templates select="address"/>
</root>
</xsl:template>
<xsl:template match="/shiporder/address">
<Seller>
<xsl:apply-templates select="city"/>
</Seller>
</xsl:template>
<xsl:template match="/shiporder/address/city">
<City>
<xsl:apply-templates select="text()"/>
</City>
</xsl:template>
創作後,我上的任意源XML文件同時應用樣式基於源模式如:
<shiporder>
<shipfrom>
<name>orderperson1</name>
</shipfrom>
<address>
<city>London</city>
</address>
<address>
<city>Berlin</city>
</address>
</shiporder>
現在我喜歡將兩個樣式表儘可能簡單地組合到一個stylesheet。
對不起,你的問題不是很清楚。請顯示兩個不同的XML輸入和每個輸入的期望輸出。 –
@JimGarrison我試圖簡化我的問題,讓我知道如果有什麼不清楚。如果你對標題有更好的建議,也請告訴我。 – StellaMaris
如果所有元素都存在,您的預期輸出是什麼?如在你的示例輸入XML中一樣? –