Tag: xslt

如何将string连接到xsl:value-of select =“…?

<a> <xsl:attribute name="href"> <xsl:value-of select="/*/properties/property[@name='report']/@value" /> </xsl:attribute> </a> 有什么办法可以捕获另一个string <xsl:value-of select="/*/properties/property[@name='report']/@value" /> 除了报表属性值之外,我还需要将一些文本传递给href属性

一个人可以给我在xsl模板的“模式”的例子吗?

在 <xsl:template name="temp_name" mode="mode"> mode的含义是什么? 我search了很多资源,但是我找不到这个例子。 那么有人可以用一个例子来解释吗? 提前致谢。

XSLT文档中的模板以什么顺序执行,并且匹配源XML或缓冲输出?

这里总是让我对XSLT感到困惑: 模板以什么顺序执行, 当它们执行时,它们是否匹配(a)原始源XML,或(b)当前XSLT的输出到那个点? 例: <person> <firstName>Deane</firstName> <lastName>Barker</lastName> </person> 以下是XSLT的一个片段: <!– Template #1 –> <xsl:template match="/"> <xsl:value-of select="firstName"/> <xsl:value-of select="lastName"/> </xsl:template> <!– Template #2 –> <xsl:template match="/person/firstName"> First Name: <xsl:value-of select="firstName"/> </xsl:template> 有两个问题: 我假设模板#1将首先执行。 我不知道为什么我这样做 – 是因为它出现在文件中的第一个? 将模板#2执行? 它匹配源XML中的一个节点,但是当我们到达这个模板(假设它运行第二个)时,“firstName”节点将不在输出树中。 那么,“以后”模板是否支持“早期”模板中发生的事情,还是在源文件上运行,而忽略了“先前”改变的内容? (所有这些单词都用引号引起来,因为当我真的不知道如何确定模板顺序时,我很难讨论基于时间的问题…) 在上面的例子中,我们有一个匹配根节点(“/”)的模板,当它完成执行时,已经从输出中删除了所有的节点。 在这种情况下,这是否会阻止所有其他模板执行,因为在第一个模板完成之后没有任何内容可以匹配? 到目前为止,我一直关注后来的模板没有执行,因为他们操作的节点没有出现在输出中,但是反过来呢? “较早”的模板能创build一个“稍后”的模板可以做些什么的节点吗? 在上面的XML中,考虑这个XSL: <!– Template #1 –> <xsl:template match="/"> <fullName> <xsl:value-of select="firstName"/> <xsl:value-of […]

为什么XSLT默认输出所有文本?

嗨,我已经执行了一个转换,如果它是空的,则会丢弃一个标记。 我想检查我的转换是否正常工作,所以不是手动检查,而是编写了一个XSLT代码,它只是检查OUTPUT XML中特定标记的存在,如果它是null,那么第二个XSLT应该输出一个文字“find”。 (我实际上并不需要一些XMLtypes的输出,但我只是使用XSLT进行search。) 当我尝试使用这个XSL代码:: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/SiebelMessage//SuppressCalendar[.!='']"> FOUND </xsl:template> </xsl:stylesheet> 它输出XML文件中的所有文本数据, 为了避免这一点,我不得不写这个代码:: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/SiebelMessage//SuppressCalendar[.!='']"> FOUND </xsl:template> <xsl:template match="text()"/> </xsl:stylesheet> 为什么前面的代码输出TEXT,为什么我要坚持XSL忽略所有其他文本? 是所有XMLparsing器的行为还是我自己的行为(我正在使用msxmlparsing器)。

如何使XSLT在Chrome中工作?

我在这里有一个XML文档,与相应的XSL文件一起提供 。 转换留在客户端执行,没有JavaScript。 这在IE(惊悚恐怖)中运行正常,但在Google Chrome中,只显示文档的文本节点。 我知道可以在Chrome中做客户端的XSL,就像我见过的例子一样,但是我还没有能够自己复制这个成功 我究竟做错了什么?

如何创build一个布尔值?

我对XSLT完全陌生,不能解决以下代码出错的地方。 <xsl:variable name="var" select="boolean('false')"/> <xsl:if test="$var'">variable is true</xsl:if> 当它被认为是虚假的时候,它总是返回真实。 为什么?

在xsl:for-each循环内计数器

如何在xsl:for-each循环中获得一个反映当前元素处理数量的计数器。 例如我的源XML是 <books> <book> <title>The Unbearable Lightness of Being </title> </book> <book> <title>Narcissus and Goldmund</title> </book> <book> <title>Choke</title> </book> </books> 我想得到的是: <newBooks> <newBook> <countNo>1</countNo> <title>The Unbearable Lightness of Being </title> </newBook> <newBook> <countNo>2</countNo> <title>Narcissus and Goldmund</title> </newBook> <newBook> <countNo>3</countNo> <title>Choke</title> </newBook> </newBooks> XSLT修改: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:template match="/"> <newBooks> <xsl:for-each […]

具有多个条件的XPath

我可以使用哪种XPath来select具有指定名称属性的任何类别以及具有指定值的任何子节点作者。 我已经尝试了下面的path的不同变化,没有成功: //quotes/category[@name='Sport' and author="James Small"] XML: <?xml version="1.0" encoding="utf-8"?> <quotes> <category name="Sport"> <author>James Small<quote date="09/02/1985">Quote One</quote><quote date="11/02/1925">Quote nine</quote></author> </category> <category name="Music"> <author>Stephen Swann <quote date="04/08/1972">Quote eleven</quote></author> </category> </quotes>

有没有在线testingxPathselect器?

我知道有一些在线正则expression式评估者..非常有用,实时匹配。 它们就像RegexBuddy的Web应用程序。 我想知道是否有类似的事情的XPathselect器? 我只是在学习它,这对我很有价值。 有没有一个在线testing器,允许您inputXML,然后xPathselect器和匹配(现场会更好,但我怀疑有人写了JavaScript解释器?)他们? 谢谢

XSLT获取最后一个元素

我试图find我的XML中的最后一个元素,看起来像 <list> <element name="A" /> <element name="B" > <element name="C" /> <element name="D" > <element name="D" /> <element name="E" /> <element name="F" /> <element name="G" /> </element> <element name="H" /> <element name="I" /> </list> 我需要得到一些反向菜单,其中当前元素和父母被突出显示为“主动”,而同胞则显示为“非主动”。 相反,结果我只有当我想“D”元素点击时有一个凌乱的树。 双D元素是我的问题。 当我使用select="//element[@name='D'][last()]"或select="//element[@name='D' and last()]" (btw哪一个是正确的? )第一次selectD元素的首次出现 (debugging器显示)。 这里是xsl <xsl:template match="list"> <xsl:apply-templates select="//navelement[@name = 'D'][last()]" mode="active"/> </xsl:template> <xsl:template match="element"> <ul […]