使用XSLT转换名称空间子(子)元素

时间:2014-04-07 10:46:44

标签: xslt

XML

 <?xml version="1.0" encoding="UTF-8"?>
 <!-- Edited by XMLSpy -->
 <h:catalog xmlns:h="http://www.w3.org/TR/html4/">
<cd>
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>10.90</price>
    <year>1985</year>
</cd>
 </h:catalog>

XSLT:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited by XMLSpy® -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"      xmlns:h="http://www.w3.org/TR/html4/">
<xsl:template match="/h:catalog/cd">
    <tr>
    <td><xsl:value-of select="title"/></td>
    <td><xsl:value-of select="country"/></td>
  </tr>
</xsl:template>
</xsl:stylesheet>

我期待以上转换的输出,但我没有 *需要你的帮助以下面的格式显示,由于名称空间子元素*

而苦苦挣扎

预期输出:

<tr xmlns:h="http://www.w3.org/TR/html4/">
    <td>Empire Burlesque</td>
    <td>USA</td>
</tr>

这只是我给出的查询的一个例子:我如何转换子元素,其父元素具有命名空间?例如:

<app:ApplicationRequest xmlns:app="http://*/applicationRequest">
      <BusinessChannel> 
       <!-- SOME STUFF -->
      </BusinessChannel>
</app:ApplicationRequest>. 

我需要使用

显示BusinessChannel的内容
  <xsl:template match="/app:ApplicationRequest/BusinessChannel">

但它没有用。

1 个答案:

答案 0 :(得分:0)

如果你想匹配一个忽略其命名空间的元素,如here所述,你必须使用local-name(),所以在你的情况下:

<xsl:template match="/app:ApplicationRequest/*[local-name()='BusinessChannel']">