xml中的请求是:
<NS2:BookTicket xmlns:NS2="http://station.com.ph/schemas/bookTicket">
<NS2:transaction_header>
<NS3:Ticket_id xmlns:NS3="http://station.com.ph/schemas/common-types">
1993</NS3:Ticket_id>
<NS4:request_datetime xmlns:NS4="http://station.com.ph/schemas/common-types">
2014-11-04T15:26:27</NS4:request_datetime>
<NS5:request_reference_no xmlns:NS5="http://smarthub.com.ph/schemas/common-types">
141104165416</NS5:request_reference_no>
<NS6:send_sms xmlns:NS6="http://smarthub.com.ph/schemas/common-types">
N</NS6:send_sms>
<NS7:send_sms_language xmlns:NS7="http://smarthub.com.ph/schemas/common-types">
en</NS7:send_sms_language>
</NS2:transaction_header>
<NS2:transaction_body>
<NS2:idn>00201220202121</NS2:idn>
<sss>2570778508</sss>
</NS2:transaction_body>
</NS2:BookTicket>
预期的输出xml(我想要的)是:
<Root>
<numberid1>00201220202121</numberid1>
<numberid2>2570778508</numberid2>
</Root>
(我想在idn中提取值并将其放入已转换的xml请求中的新元素中,同时我也要提取值insides sss并将其放入已转换的xml请求中的新元素中)
我写了这个请求xslt:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"
xmlns:xalan="http://xml.apache.org/xslt">
<xsl:template match="/">
<xsl:element name="Root">
<xsl:choose>
<xsl:when test="*//BookTicket">
<xsl:element name="numberid1">
<xsl:value-of select="*//idn" />
</xsl:element>
<xsl:element name="numberid2">
<xsl:value-of select="*//sss" />
</xsl:element>
</xsl:when>
</xsl:choose>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
应用xsl后的Actual转换后的xml是: 为什么不能找到BookTicket或创建新元素?它是与命名空间相关的东西吗?
答案 0 :(得分:0)
以这种方式尝试:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:NS2="http://station.com.ph/schemas/bookTicket"
exclude-result-prefixes="NS2">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<Root>
<xsl:for-each select="NS2:BookTicket/NS2:transaction_body">
<numberid1><xsl:value-of select="NS2:idn"/></numberid1>
<numberid2><xsl:value-of select="sss"/></numberid2>
</xsl:for-each>
</Root>
</xsl:template>
</xsl:stylesheet>