我知道这是超级菜鸟,但我只是不明白为什么我的代码不起作用。这是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"/>
给我正确的价值
34
然后在我试图找到答案时,我找到了这个网站:http://www.mizar.dk/XPath/Default.aspx我注意到在这里尝试时,它会突出显示元素,而不是其中的值:http://screencast.com/t/NXuNiCHbEd0T
以下是一些更多信息: 我正在研究的系统名为Interprise Suite Ecommerce(这就是“ise”来自的地方)。这是他们的网络软件,与他们的ERP软件Interprise Suite集成。 ISE是一个电子商务软件,不久前改编自AspDotNetStoreFront。我会尝试解释我所掌握的有限知识。
正在加载的页面是产品或类别页面。我正在处理的这个特定文件提供了侧栏产品导航菜单的布局。该文件名为rev.categories.xml.config。这个文件包含XSLT代码。它正在转换的原始XML数据,我不知道它来自哪里,我无法访问它。有了Dimitre在上一个问题中的帮助,我能够在网页中重现XML数据,这样我就可以理解更多了。在其输出中,顶级节点是
<root>
加载此XML包的文件名为template.ascx。它是模板或“主”文件。在ASPDNSF中,您可以使用这些称为“令牌”的东西将内容加载到页面中,此令牌就是调用rev.categories.xml.config来激活和执行其操作。令牌如下所示:
(!XmlPackage Name="rev.categories"!)
我不确定令牌是如何工作的。我的想法是它不相关,因为除了这一行代码之外,这个文件中的其他所有东西都在工作。
请原谅我缺乏知识,经验和适当的语言。
编辑:这是指向rev.categories.xml.confg完整代码的链接。 http://jsfiddle.net/v5cNM/
答案 0 :(得分:1)
很少(如果有的话)(我不知道)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