我正在尝试使用XSLT从外部遗留Web服务接收的数据填充xml,该服务为酒店信息提供机器生成的值。它们为酒店提供了带有下划线和数字的元素名称,如下所示 例如HotelName_1,HotelName_2等。如何将带有下划线的这些字段名称映射到我的元素?
<cfset myStru = { stores = [] }>
<cfset myTmpStru = { storeid = 101, storename = "STORE101", reports = [ ] }>
<cfset myTmpStru2 = { reportid = 201, reportname = "REPORT201", pics = [ ] }>
<cfset ArrayAppend( myTmpStru.reports, myTmpStru2 )>
<cfset ArrayAppend( myStru.stores, myTmpStru )>
答案 0 :(得分:0)
如何将带有下划线的这些字段名称映射到我的元素?
这是你可以看到它的一种方式:
<xsl:template match="Hotel_Info">
<AvailableHotels>
<xsl:for-each select="*">
<Hotel>
<HotelName>
<xsl:value-of select="*[starts-with(name(), HotelName)]"/>
</HotelName>
<!-- more here -->
</Hotel>
</xsl:for-each>
</AvailableHotels>
</xsl:template>
或者,如果您的架构与他们的架构匹配,除了下划线(并且下划线是一致的 - 与示例中显示的不同):
<xsl:template match="/Hotel_Info">
<AvailableHotels>
<xsl:for-each select="*">
<Hotel>
<xsl:for-each select="*">
<xsl:element name="{substring-before(name(), '_')}">
<xsl:value-of select="."/>
</xsl:element>
</xsl:for-each>
</Hotel>
</xsl:for-each>
</AvailableHotels>
</xsl:template>