标签: xslt

具有多个条件的XPath

我可以使用什么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)

xml xslt xpath

138
推荐指数
4
解决办法
23万
查看次数

使用XSLT设置HTML5 doctype

如何通过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 html5 doctype xhtml-transitional xdv

133
推荐指数
8
解决办法
8万
查看次数

获取XML中的属性值

如何使用xslt在以下xml中获取attribute1(blah)的值:

<name attribute1="blah" attribute2="blahblah">
</name>
Run Code Online (Sandbox Code Playgroud)

xml xslt xpath attributes

133
推荐指数
1
解决办法
19万
查看次数

XSLT获取最后一个元素

我试图找到我的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)

xslt xpath menu

126
推荐指数
1
解决办法
13万
查看次数

用javascript打印XML

我有一个字符串,表示我想要打印的非缩进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)

javascript xml xslt pretty-print

123
推荐指数
8
解决办法
14万
查看次数

你能在xslt测试属性中加入两个条件吗?

这是正确的当4 <5和1 <2?

<xsl:when test="4 &lt; 5 AND 1 &lt; 2" >
<!-- do something -->
</xsl:when>
Run Code Online (Sandbox Code Playgroud)

xslt

120
推荐指数
4
解决办法
20万
查看次数

如何使用XSLT将字符串转换为大写或小写?

你如何在XSL中进行大小写转换?

<xsl:variable name="upper">UPPER CASE</xsl:variable>
<xsl:variable name="lower" select="???"/>
Run Code Online (Sandbox Code Playgroud)

string xslt xpath case-conversion

116
推荐指数
3
解决办法
16万
查看次数

XSL中"call-template"和"apply-templates"之间有什么区别?

我是XSLT的新手,所以我对这两个标签感到有点困惑,

<xsl:apply-templates name="nodes">
Run Code Online (Sandbox Code Playgroud)

<xsl:call-template select="nodes"> 
Run Code Online (Sandbox Code Playgroud)

那么你能列出它们之间的区别吗?

xslt apply-templates

116
推荐指数
3
解决办法
10万
查看次数

XSLT值得吗?

不久之前,我开始创建一个项目,我设计了一个html-esque XML模式,以便作者可以用简化格式编写他们的内容(教育课程材料),然后通过XSLT将其转换为HTML.我玩了一段时间(挣扎)了一段时间并把它带到了一个非常基本的水平,但后来因为我遇到的限制(这可能是我的知识的局限性)太烦恼了,当我读到一篇建议要沟通的博客时XSLT,只需用你选择的语言编写自己的XML-to-any解析器,我就急切地跳到了它,并且它的运行非常出色.

到目前为止我还在努力(我实际上应该正在努力,而不是在SO上玩),我看到越来越多的东西让我觉得放弃XSLT的决定是一个好的.

我知道XSLT有它的位置,因为它是一个公认的标准,并且如果每个人都在编写自己的解释器,其中90%将最终在TheDailyWTF上.但鉴于它是一种功能风格的语言,而不是大多数程序员熟悉的程序风格,对于那些开始像我自己这样的项目的人,你会建议他们沿着我做的路走下去,或者用XSLT坚持下去

xml xslt

111
推荐指数
10
解决办法
3万
查看次数

为什么XPath中的索引从1开始而不是0?

我和一些同事正在比较我们编写的过去的语言,并且正在讨论我们使用VBScript的经验,其奇怪的功能,如基于1的索引而不是基于0的索引,就像几乎所有其他语言一样,原因是它是一个用户语言(例如Excel VBA)而不是开发人员的语言.

然后有人说," XPath也有基于1的索引 ",直到我发现这篇文章中有许多理由支持基于0的方法,其中包括Michael Kay本人的一些,我无法相信:

  • "...基于零的索引倾向于在访问具有一维数组访问表达式的多维数组时使索引公式更简单"
  • "在处理表格或订阅字符串时,基于零的寻址通常会更加方便"
  • "...硬件寻址不是基于0的寻址的唯一好处......它也使计算更容易......"

但随后Michael Kay被引用作为结论:

......基于1的逻辑是XPath和XSLT的正确选择...因为该语言是为用户而不是为程序员设计的,而且用户仍然有这种老式的习惯,即将书中的第一章称为章节一...

有人可以向我解释一下吗? (1)XPath如何为用户设计?我无法想象任何不是开发人员与XPath的语法刚性或XSLT的声明/功能编程方面争论的人.和(2)为什么确实的XPath的创造者违背现代编程语言的规范,通过选择基于1指数?

xslt indexing xpath

111
推荐指数
2
解决办法
3万
查看次数