【问题标题】:Xslt changes nodes letter to lowercaseXslt 将节点字母更改为小写
【发布时间】:2013-09-05 07:29:41
【问题描述】:

我想使用 xslt 从 Xml 创建 KML 代码 问题是 xslt 将节点的所有字母都更改为小写 这是我的代码:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <xsl:for-each select="tasks/task">
        <kml >
            <Placemark>
                <name><xsl:value-of select="title"/></name>
                <description>
                    <xsl:value-of select="abilities"/>
                </description>
                <Point><coordinates><xsl:value-of select="geotag"/></coordinates></Point>
            </Placemark>
        </kml>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

问题是当我使用下一个 javascript 代码获取 xslt 的输出时,我得到了小写的节点 Placemark 和 Point!

var xsltTasksAsKml = xsltProcessor.transformToFragment(xml, document);
var div = document.createElement('div');
div.appendChild(xsltTasksAsKml);
alert(div.innerHTML);

我该如何处理这个问题? 提前致谢。

【问题讨论】:

  • 我从未听说过这样的问题。您的输入 XML 是什么样的?
  • 小写字母是否可能是因为我正在从 div.innerHTML 读取字符串?

标签: javascript xml xslt


【解决方案1】:

你需要改变

xsltProcessor.transformToFragment(xml, document);

进入

xsltProcessor.transformToDocument(xml);

这消除了对“拥有”文档的依赖。对我来说,这解决了一个非常相似的问题。

【讨论】:

  • 谢谢,对我来说这是更好的答案。
【解决方案2】:

如果您将此文档作为 text/html 而不是 application/xhtml+xml 提供,则 innerHTML 将使用(大部分)不区分大小写的 HTML 解析器,因此不一定会保留元素名称。您可以将文档作为 XHTML(如果格式正确)提供,或者从 javascript 显式调用 xml 解析器来解析 XSLT 脚本。

【讨论】:

  • 感谢您的回答。我应该在创建 div 时设置内容“application/xhtml+xml”吗?因为我在文档上更改了它但没有工作:
  • 最好在服务器上实际设置它,但改变它会改变整个文档的解释,直接访问 xml 解析器是一个不那么侵入性的改变
猜你喜欢
  • 1970-01-01
  • 2017-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-15
  • 2012-01-03
  • 1970-01-01
  • 2017-04-10
相关资源
最近更新 更多