XSLT无法正常工作

JMM*_*JMM 2 xml xslt

我有一个XML文件,我想使用XSLT进行转换.它仅在我从XML文件的以下部分中删除所有属性时才起作用:

<DiscoveryClientData 
  xmlns="http://www.frontrange.com/centennial/discovery" 
  SchemaVersion="0.6" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://www.frontrange.com/centennial/discovery DiscoveryClientData-0.6.xsd"
/>
Run Code Online (Sandbox Code Playgroud)

XSLT就像这样开始:

<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="DiscoveryClientData">
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么这可能会失败?失败的是它没有在转换后的数据周围放置任何元素标签,它只是将它全部吐出一个连续的字符串.

谢谢!

编辑:好的,下面给出的示例有效,但有没有办法在XSLT文件中只定义一次前缀?所以我不必重写我的整个XSLT文件?谢谢.

Gra*_*rdx 5

您的XML不在默认命名空间中,因此您的XSLT找不到要处理的任何节点.

检查这里的如何命名空间分配给XSL模板.

按流行需求添加此项.取自:这里

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
   xmlns:b="urn:xmlns:25hoursaday-com:bookstore">

<xsl:template match="b:bookstore">
<book-titles>
<xsl:apply-templates select="b:book/b:title"/>
</book-titles>
</xsl:template>

<xsl:template match="b:title"> 
<xsl:copy-of select="." />
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

  • @Tomalak你能为此提供一个例子吗?我无法让它工作.. (2认同)