gpt4 book ai didi

xml - 使用 XSLT 和 XPath,获取 XML 节点或元素的值?

转载 作者:行者123 更新时间:2023-12-03 16:43:23 25 4
gpt4 key购买 nike

我知道这是 super 菜鸟,但我只是不明白为什么我的代码不起作用。这是 XML 片段:

<root>
<cookies>
<lastviewedentityname>Category</lastviewedentityname>
<lastviewedentityinstanceid>72</lastviewedentityinstanceid>
<lastviewedentityinstancename>Fall Florals</lastviewedentityinstancename>
some random text bla bla
</cookies>
<QueryString>
<categoryid>34</categoryid>
</QueryString>
<!-- other nodes -->
</root>

这是 XSL 片段:
<?xml version="1.0" standalone="yes" ?>
<package version="2.1" displayname="Categories" debug="false" includeentityhelper="true">
<PackageTransform>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ise="urn:ise" exclude-result-prefixes="ise">
<xsl:output method="html" omit-xml-declaration="yes"/>

<!-- other code -->

<xsl:value-of select="/root/cookies/lastviewedentityinstanceid"/>

<!-- other code -->

</xsl:stylesheet>
</PackageTransform>
</package>

我正在寻找的结果是

72



但似乎我得到了空字符串或其他东西。看着这个: http://www.w3schools.com/xsl/xsl_value_of.asp ,我假设我的代码没问题。此外,确认这一点是此代码:
<xsl:value-of select="/root/QueryString/categoryid"/>

给我正确的值(value)

34



然后在我试图寻找答案的过程中,我找到了这个网站: http://www.mizar.dk/XPath/Default.aspx我注意到当我在这里尝试时,它会突出显示元素,而不是其中的值: http://screencast.com/t/NXuNiCHbEd0T

这是更多信息:
我正在开发的系统称为 Interprise Suite Ecommerce(这就是“ise”的来源)。这是他们的网络软件,它与称为 Interprise Suite 的 ERP 软件集成在一起。 ISE 是前段时间改编自 AspDotNetStoreFront 的电子商务软件。我将尝试解释我所拥有的有限知识。

正在加载的页面是产品或类别页面。我正在处理的这个特定文件提供了侧边栏产品导航菜单的布局。该文件称为 rev.categories.xml.config。此文件包含 XSLT 代码。它正在转换的原始 XML 数据,我不知道它来自哪里,也无权访问它。在 Dimitre 在上一个问题中的帮助下,我能够在网页中重现 XML 数据,这样我就可以了解更多。在其输出中,顶级节点是
<root>

加载此 XML 包的文件称为 template.ascx。它是一个模板或“主”文件。在 ASPDNSF 中,您可以使用这些称为“ token ”的东西将内容加载到页面中,而这个 token 就是调用 rev.categories.xml.config 来激活并执行其操作的东西。 token 如下所示:
(!XmlPackage Name="rev.categories"!)

我不确定 token 是如何工作的。我的想法是它不相关,因为除了这一行代码之外,此文件中的其他所有内容都在工作。

请原谅我缺乏知识、经验和适当的语言。

编辑:这是 rev.categories.xml.confg 完整代码的链接。 http://jsfiddle.net/v5cNM/

最佳答案

XSLT 处理器支持嵌入式样式表(如果有的话)非常少(我不知道) .

在 XML 文档上应用转换的正确且普遍支持的方法是将 XSLT 样式表放在单独的 XML 文档中(通常位于其自己的文件中)。
<xsl:stylesheet> (或其同义词 xsl:transform )必须是样式表的顶部元素。

本次改造 (占用自己的文件):

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

<xsl:template match="/">
<xsl:value-of select=
"/root/cookies/lastviewedentityinstanceid"/>
</xsl:template>
</xsl:stylesheet>

应用于提供的 XML 文档时:
<root>
<cookies>
<lastviewedentityname>Category</lastviewedentityname>
<lastviewedentityinstanceid>72</lastviewedentityinstanceid>
<lastviewedentityinstancename>Fall Florals</lastviewedentityinstancename>
some random text bla bla
</cookies>
<!-- other nodes -->
</root>

产生想要的正确结果 :
72

关于xml - 使用 XSLT 和 XPath,获取 XML 节点或元素的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12343003/

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