【问题标题】:带有 XSLT 转换的 XML
【发布时间】:2022-01-20 01:59:33
【问题描述】:

我正在尝试使用 XSLT 转换来转换一个简单的 XML 文档,尽管当我尝试在浏览器 [Chrome 或 Safari] 上运行 XML 时,我收到一个错误“文档为空”,但是我使用的 XML 不是空的。

任何提示我的错误在哪里以及如何解决它?非常感谢。

XML - people3.xml

<?xml version="1.0" standalone="no"?>

<?xml-stylesheet type="text/xsl" href="people.xsl"?>

<people>
    <husband employee="Yes">
        <name>Mark</name>
        <age>45</age>
            <wife>
                <wname>Janet</wname>
                <age>29</age>
            </wife>
    </husband>
    <husband employee="No">
        <name>Matt</name>
        <age>42</age>
            <wife>
                <wname>Annie</wname>
                <age>41</age>
            </wife>
    </husband>
</people>

XSL - people.xsl

<?xml version="1.0"?>

<xdl:stylesheet version='1.0'

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="name">
    Hello from XSLT
</xsl:template>

</xsl:stylesheet>

【问题讨论】:

  • 那么您期望从该代码得到的结果格式是什么?
  • 为什么 XSLT 有xdl:stylesheet 却声明了xmlns:xsl="http://www.w3.org/1999/XSL/Transform"?我猜你想要xsl:stylesheet
  • 在浏览器以外的环境中测试样式表是个好主意,尤其是当您是初学者时。通过这种方式,您可以获得更好的诊断结果。
  • @MartinHonnen 我期待的结果是来自 XSLT 的 Hello。我在上传文件的过程中也有一个拼写错误,是的,它是 xsl:stylesheet。尽管以这种方式进行还没有显示任何内容。
  • @MichaelKay 谢谢你,目前我只是习惯使用这种文件。任何关于如何改进 XML 和 JSON 文件测试的想法都将不胜感激。

标签: xml xslt


【解决方案1】:

据我所知,您只是遇到了 WebKit 特定的限制,您可以在浏览器中使用 XSLT 生成的结果类型,而不是仅仅将一些文本作为片段推送到结果中,您应该尝试构建一些 HTML 文档,因此构建 HTML 结果文档并合并您的模板的最小示例将是

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">

  <xsl:output method="html" indent="yes" version="5" doctype-system="about:legacy-doctype"/>

<xsl:template match="name">
    Hello from XSLT
</xsl:template>

  <xsl:template match="/">
    <html>
      <head>
        <title>Example</title>
      </head>
      <body>
        <xsl:apply-templates/>
      </body>
    </html>
  </xsl:template>

</xsl:stylesheet>

这样,关于空文档的消息应该会消失,并且会呈现一些结果,这并不是一个真正有意义的结果,因为无论如何都有内置模板可以输出任何文本节点,并且您的模板匹配两个 @987654322 @ 输入示例中的元素,因此构造的 HTML 的主体将类似于

Hello from XSLT

    45
        
            Janet
            29
        


    
Hello from XSLT

    42
        
            Annie
            41

目前尚不清楚您想要实现什么输出,但请记住,您最好在浏览器中创建一些或多或少结构良好的 HTML 文档以进行渲染,而不是使用文本片段。

【讨论】:

  • 非常感谢您的解释和示例!非常感谢!
猜你喜欢
  • 2012-03-19
  • 2019-01-23
  • 1970-01-01
  • 2019-10-06
  • 1970-01-01
  • 1970-01-01
  • 2018-06-27
  • 2019-10-10
  • 2020-09-05
相关资源
最近更新 更多