gpt4 book ai didi

xml - 当使用 msxml 的 XSLT 转换与根节点 ('/' 不匹配时该怎么办?

转载 作者:行者123 更新时间:2023-12-02 05:09:18 24 4
gpt4 key购买 nike

我正在使用 Delphi/MSXML 运行 XSLT 1.0 转换。 XSLT 就像

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:lh="http://localhost"
version="1.0">

<xsl:output method="html" omit-xml-declaration="yes" indent="yes" encoding="ISO-8859-1" />

<xsl:template match="@*|node()">
<xsl:apply-templates />
</xsl:template>

<xsl:template match="/">
<html>
<body>
<h2>My Book Collection</h2>
<table border="1">
<tr>
<th>Author</th>
<th>Title</th>
</tr>
<xsl:for-each select="lh:library/lh:book">
<tr>
<td><xsl:value-of select="@author"/></td>
<td><xsl:value-of select="."/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>

</xsl:stylesheet>

XML books.xml 定义为

<?xml version="1.0" encoding="UTF-8"?>
<library xmlns="http://localhost">
<book author="Michael Howard">Writing Secure Code</book>
<book author="Michael Kay">XSLT Reference</book>
</library>

当我运行此XSLT transformation using Delphi/MSXML时,它不会输出任何内容。

作为引用,Saxon 产生以下结果(不包括 1.0/2.0 警告消息):

<html xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:lh="http://localhost">
<body>
<h2>My Book Collection</h2>
<table border="1">
<tr>
<th>Author</th>
<th>Title</th>
</tr>
<tr>
<td>Michael Howard</td>
<td>Writing Secure Code</td>
</tr>
<tr>
<td>Michael Kay</td>
<td>XSLT Reference</td>
</tr>
</table>
</body>
</html>

我可以对 XML(XSLT 并不是真的需要我更改)做些什么来提供与 Saxon 中相同的输出?

最佳答案

尝试使用文档节点运行转换;更改original code这一行:

XML.DocumentElement.TransformNode(XSL.DocumentElement, Result)

至:

XML.Node.TransformNode(XSL.Node, Result)

如果您在 documentElement 节点上显式调用 transformNode,那么 match="/" 不会得到,我并不感到惊讶已应用。

关于xml - 当使用 msxml 的 XSLT 转换与根节点 ('/' 不匹配时该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26427022/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com