我試圖讓從下方使用XSLT的XML的ageCode
屬性,把<Adults>3</Adults>
如果ageCode
= 10或<Children>0</Children>
如果`ageCode = 8.這是我的示例XML:XML不會使用XSLT進行轉換嗎?
<Root>
<Reservations>
<Reservation>
<Rooms>
<Room>
<Guests>
<Guest ageCode="10" count="3" />
<Guest ageCode="8" count="0" />
</Guests>
</Room>
</Rooms>
</Reservation>
</Reservations>
</Root>
我試圖將其變換分析到:
<Reservation>
<Rooms>
<Room>
<Adults>3</Adults>
<Children>0</Children>
</Room>
</Rooms>
</Reservation>
與follwing XSLT,但我不能讓它工作(我是完全新的XSLT):
<?xml version="1.0" encoding="iso-8859-1"?>
<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="Reservation">
<xsl:apply-templates />
</xsl:element>
</xsl:template>
<xsl:template match="Root/Reservations/Reservation/Rooms/Room/Guests">
<xsl:for-each select="Guest">
<xsl:if test="@ageCode = '10'">
<xsl:element name="Adults">
<xsl:value-of select="@count"/>
</xsl:element>
</xsl:if>
<xsl:if test="@ageCode = '8'">
<xsl:element name="Children">
<xsl:value-of select="@count"/>
</xsl:element>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
XSLT是如何工作的?通過這個我的意思是它應用模板從頂部到底部?我問,因爲你說我需要3個模板,每個模板都應用了一個新的轉換。
第一個和第二個模板實際上做了什麼?有沒有辦法在第一次應用後顯示XML,然後是第二次?我在這裏正確理解XSLT嗎?
你是什麼意思的應用更深的模板?
如果我必須創建許多XSLT,像MapForce這樣的工具會有用嗎?
誰低估,謹慎解釋? – Xaisoft 2012-07-18 19:58:31