我可以使用什么XPath来选择具有指定名称属性的任何类别以及具有指定值的任何子节点作者.
我尝试过以下路径的不同变体而没有成功:
//quotes/category[@name='Sport' and author="James Small"]
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud) 如何通过XSLT 将文件的doctype 干净地设置为HTML5 <!DOCTYPE html>(在本例中为collective.xdv)
以下是我最好的谷歌foo能够找到的:
<xsl:output
method="html"
doctype-public="XSLT-compat"
omit-xml-declaration="yes"
encoding="UTF-8"
indent="yes" />
Run Code Online (Sandbox Code Playgroud)
生产:
<!DOCTYPE html PUBLIC "XSLT-compat" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Run Code Online (Sandbox Code Playgroud) 如何使用xslt在以下xml中获取attribute1(blah)的值:
<name attribute1="blah" attribute2="blahblah">
</name>
Run Code Online (Sandbox Code Playgroud) 我试图找到我的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>
Run Code Online (Sandbox Code Playgroud)
我需要获得某种反向菜单,其中当前元素和父元素被突出显示为"活动",而兄弟节点则显示为"非活动".相反,结果我只有当我想点击"D"元素时才有一个凌乱的树.
双D元素是我的问题.当我使用
select="//element[@name='D'][last()]"或select="//element[@name='D' and last()]"(顺便哪一个是正确的?)第一次出现 D元素时(调试器显示).这是xsl
<xsl:template match="list">
<xsl:apply-templates select="//navelement[@name = 'D'][last()]" mode="active"/>
</xsl:template>
<xsl:template match="element">
<ul class="menu">
<xsl:apply-templates select="preceding-sibling::node()" mode="inactive"/>
<li><a>....</a></li>
<xsl:apply-templates select="following-sibling::node()" mode="inactive"/>
</ul>
<xsl:apply-templates select="parent::element" mode="active"/>
</xsl:template>
<xsl:template match="element" mode="inactive">
<li><a>....</a></li>
</xsl:template>
Run Code Online (Sandbox Code Playgroud) 我有一个字符串,表示我想要打印的非缩进XML.例如:
<root><node/></root>
Run Code Online (Sandbox Code Playgroud)
应成为:
<root>
<node/>
</root>
Run Code Online (Sandbox Code Playgroud)
语法突出显示不是必需的.为了解决这个问题,我首先转换XML以添加回车符和空格,然后使用pre标签输出XML.为了添加新行和空格,我编写了以下函数:
function formatXml(xml) {
var formatted = '';
var reg = /(>)(<)(\/*)/g;
xml = xml.replace(reg, '$1\r\n$2$3');
var pad = 0;
jQuery.each(xml.split('\r\n'), function(index, node) {
var indent = 0;
if (node.match( /.+<\/\w[^>]*>$/ )) {
indent = 0;
} else if (node.match( /^<\/\w/ )) {
if (pad != 0) {
pad -= 1;
}
} else if (node.match( /^<\w[^>]*[^\/]>.*$/ )) {
indent = 1;
} else {
indent = 0;
}
var padding = …Run Code Online (Sandbox Code Playgroud) 这是正确的当4 <5和1 <2?
<xsl:when test="4 < 5 AND 1 < 2" >
<!-- do something -->
</xsl:when>
Run Code Online (Sandbox Code Playgroud) 你如何在XSL中进行大小写转换?
<xsl:variable name="upper">UPPER CASE</xsl:variable>
<xsl:variable name="lower" select="???"/>
Run Code Online (Sandbox Code Playgroud) 我是XSLT的新手,所以我对这两个标签感到有点困惑,
<xsl:apply-templates name="nodes">
Run Code Online (Sandbox Code Playgroud)
和
<xsl:call-template select="nodes">
Run Code Online (Sandbox Code Playgroud)
那么你能列出它们之间的区别吗?
不久之前,我开始创建一个项目,我设计了一个html-esque XML模式,以便作者可以用简化格式编写他们的内容(教育课程材料),然后通过XSLT将其转换为HTML.我玩了一段时间(挣扎)了一段时间并把它带到了一个非常基本的水平,但后来因为我遇到的限制(这可能是我的知识的局限性)太烦恼了,当我读到一篇建议要沟通的博客时XSLT,只需用你选择的语言编写自己的XML-to-any解析器,我就急切地跳到了它,并且它的运行非常出色.
到目前为止我还在努力(我实际上应该正在努力,而不是在SO上玩),我看到越来越多的东西让我觉得放弃XSLT的决定是一个好的.
我知道XSLT有它的位置,因为它是一个公认的标准,并且如果每个人都在编写自己的解释器,其中90%将最终在TheDailyWTF上.但鉴于它是一种功能风格的语言,而不是大多数程序员熟悉的程序风格,对于那些开始像我自己这样的项目的人,你会建议他们沿着我做的路走下去,或者用XSLT坚持下去?
我和一些同事正在比较我们编写的过去的语言,并且正在讨论我们使用VBScript的经验,其奇怪的功能,如基于1的索引而不是基于0的索引,就像几乎所有其他语言一样,原因是它是一个用户语言(例如Excel VBA)而不是开发人员的语言.
然后有人说," XPath也有基于1的索引 ",直到我发现这篇文章中有许多理由支持基于0的方法,其中包括Michael Kay本人的一些,我无法相信:
但随后Michael Kay被引用作为结论:
......基于1的逻辑是XPath和XSLT的正确选择...因为该语言是为用户而不是为程序员设计的,而且用户仍然有这种老式的习惯,即将书中的第一章称为章节一...
有人可以向我解释一下吗? (1)XPath如何为用户设计?我无法想象任何不是开发人员与XPath的语法刚性或XSLT的声明/功能编程方面争论的人.和(2)为什么确实的XPath的创造者违背现代编程语言的规范,通过选择基于1指数?
xslt ×10
xpath ×5
xml ×4
attributes ×1
doctype ×1
html5 ×1
indexing ×1
javascript ×1
menu ×1
pretty-print ×1
string ×1
xdv ×1