gpt4 book ai didi

javascript - 我可以在 javascript 中使用 XPath 返回整个 XML 文档吗?

转载 作者:行者123 更新时间:2023-11-30 18:50:26 25 4
gpt4 key购买 nike

我正在使用 Javascript,我想返回一个包含我想要的结果的 XML 文档。

例如,XML 文档可以是
<books>
<book>
<title>
Introduction to XML
</title>
</book>
<book>
<title>
Introduction to Javascript
</title>
</book>
</books>

并使用这个 XPath 表达式: //book[./title="Introduction to XML"]我想得到这样的文件
<books>
<book>
<title>
Introduction to XML
</title>
</book>
</books>

我知道 XQuery 听起来像是这里的解决方案,但我使用的是 Javascript,据我所知,没有针对 Javascript 中的 XQuery 的内置实现。

我想把我需要的东西一起还给祖先。但如果我得到多个结果,它也应该有效。这可以使用 XPath 实现吗?

最佳答案

XPath 无法更改源 XML 文档,也无法生成新的 XML 文档。

因此,必须为此使用其他一些技术。 XSLT 是一种专门为 wxpressing 此类转换而设计的语言。

在大多数浏览器中,您可以使用由关联的 <?xml-stylesheet ?> 标识的 XSLT 样式表来处理 XML 文档。 PI(处理指令)

大多数浏览器还提供了一些在 Javascript 中启动 XSLT 转换的方法——请阅读您的浏览器文档。

XSLT 转换本身非常简单:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:param name="pTitleWanted" select="' Introduction to XML '"/>

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

<xsl:template match="books">
<xsl:copy>
<xsl:apply-templates select="book[title = $pTitleWanted]"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>

当此转换应用于提供的 XML 文档时:

<books>
<book>
<title> Introduction to XML </title>
</book>
<book>
<title> Introduction to Javascript </title>
</book>
</books>

产生了想要的、正确的结果:

<books>
<book>
<title> Introduction to XML </title>
</book>
</books>

关于javascript - 我可以在 javascript 中使用 XPath 返回整个 XML 文档吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4084582/

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