我正在尝试ageCode
从下面的 xml 和 xslt 中获取属性,<Adults>3</Adults>
如果ageCode
= 10 或<Children>0</Children>
`ageCode = 8,则输入。这是我的示例 xml:
<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>
使用以下 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 这样的工具会有用吗?