标签: xslt

XSL xsl:template match ="/"

我只是在学习XML以及如何使用XSL文件.在XSL文件中,我发现了以下术语:

xsl:template match="/"
Run Code Online (Sandbox Code Playgroud)

这代表什么?我可以用什么而不是/?我可以写table或任何其他HTML标签而不是/

xml xslt xslt-2.0 xslt-1.0

53
推荐指数
3
解决办法
9万
查看次数

如何使用XSLT创建不同的值

我有这样的XML:

<items>
  <item>
    <products>
      <product>laptop</product>
      <product>charger</product>
    </products>
  </item>
  <item>
    <products>
      <product>laptop</product>
      <product>headphones</product>  
    </products>  
  </item>
</items>
Run Code Online (Sandbox Code Playgroud)

我希望它输出像

laptop
charger
headphones

我试图使用,distinct-values()但我想我做错了.谁能告诉我如何使用这个distinct-values()?谢谢.

<xsl:template match="/">            
  <xsl:for-each select="//products/product/text()">
    <li>
      <xsl:value-of select="distinct-values(.)"/>
    </li>               
  </xsl:for-each>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

但它给我这样的输出:

<li>laptop</li>
<li>charger</li>
<li>laptop></li>
<li>headphones</li>
Run Code Online (Sandbox Code Playgroud)

xslt

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

来自字符串内容的XMLReader

我正在尝试使用XslTransform从另一个XML生成XML.我将这两个文件(源XML和XSL转换文件)作为字符串内容,所以我试图将XSL文件作为XmlReader传递给XslTransform.Load()方法.现在必须从包含XSL文件的源字符串创建XmlReader,所以我尝试这样做:

MemoryStream memStream = new MemoryStream();
byte[] data = Encoding.Default.GetBytes(transformation.XsltContent);
memStream.Write(data, 0, data.Length);
memStream.Position = 0;
XmlReader reader = XmlReader.Create(memStream);
Run Code Online (Sandbox Code Playgroud)

并尝试使用StringReader:

XmlReader reader = XmlReader.Create(new StringReader(transformation.XsltContent));
Run Code Online (Sandbox Code Playgroud)

不幸的是,bot方法似乎不起作用,输入似乎没问题,我甚至尝试创建一些基本的单元素XML来传递,也不会工作 - 读者包含{None}.

有人能指出这里似乎有什么问题吗?

c# xml xslt

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

XPath通过id属性获取另一个属性

我正在使用XPath从网页中提取数据.

我有一个链接,我想得到的href值.我可以通过它唯一的id引用它:id('unique-id')但是这给了我<a>标签之间的字符串.

如何获取href属性的值?

xml xslt xpath

50
推荐指数
1
解决办法
6万
查看次数

在xslt concat函数中转义单引号

我想在下面的xsl:value-of xsl statment中输出$ ID变量周围的单引号.

<xsl:value-of select="concat('process[@Ref=',$ID,']')"></xsl:value-of>
Run Code Online (Sandbox Code Playgroud)

目前它打印

process@Ref=87799989
Run Code Online (Sandbox Code Playgroud)

请让我知道如何实现这一目标.

谢谢,Keshav

javascript xml xslt

48
推荐指数
4
解决办法
7万
查看次数

XSL for-each:如何检测最后一个节点?

我有这个简单的代码:

<xsl:for-each select="GroupsServed">
  <xsl:value-of select="."/>,<br/>
</xsl:for-each></font>
Run Code Online (Sandbox Code Playgroud)

我正在尝试为添加的每个项添加逗号.

这有两个缺陷:

  1. 只有一个项目的情况:代码将无条件地添加逗号.
  2. 如果有多个项目的情况:最后一项将有一个逗号.

您认为解决此问题的最优雅解决方案是什么?

我正在使用XSLT 2.0

xslt

47
推荐指数
2
解决办法
6万
查看次数

是否有任何XSLT处理命令行工具?

我想通过XSLT文件和XSLT处理工具将XML文件更改为修改后的XML文件.

例如: xsltprocess.exe -src a.xml -dest b.xml -xslt c.xslt

任何人都可以帮我吗?

windows xslt command-line

46
推荐指数
4
解决办法
5万
查看次数

如何从XSLT中的子节点读取父节点的属性

只想知道如何从XSLT中的子节点读取父节点的属性.码:

<A>
  <b attr1="xx">
    <c>
    </c>
  </b>
</A>
Run Code Online (Sandbox Code Playgroud)

XSLT:

<xsl:template match="c">
  <xsl:value-of select="attribute of b node">
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

xslt xpath

45
推荐指数
1
解决办法
6万
查看次数

XSLT - 从模板中删除空格

我使用XML来存储一个小的联系人列表,并尝试编写一个XSL模板,将其转换为CSV文件.我遇到的问题是输出中有空格.

输出:

Friend, John, Smith, Home,
        123 test,
       Sebastopol,
       California,
       12345,
     Home 1-800-123-4567, Personal john.smith@gmail.com
Run Code Online (Sandbox Code Playgroud)

我缩进/间隔了源XML文件和相关的XSL模板,以便于阅读和开发,但所有额外的空白区域都会进入输出.XML本身在节点内没有额外的空格,只是在它们之外用于格式化,XSLT也是如此.

为了使CSV文件有效,每个条目都需要在它自己的行上,而不是分解.除了从XML和XSLT剥离所有额外的空白区域(使它们只是一行代码)之外,还有另一种方法可以摆脱输出中的空格吗?

编辑:这是一个小的XML示例:

<PHONEBOOK>
    <LISTING>
        <FIRST>John</FIRST>
        <LAST>Smith</LAST>
        <ADDRESS TYPE="Home">
            <STREET>123 test</STREET>
            <CITY>Sebastopol</CITY>
            <STATE>California</STATE>
            <ZIP>12345</ZIP>
        </ADDRESS>
        <PHONE>1-800-123-4567</PHONE>
        <EMAIL>john.smith@gmail.com</EMAIL>
        <RELATION>Friend</RELATION>
    </LISTING>
</PHONEBOOK>
Run Code Online (Sandbox Code Playgroud)

这是XSLT:

<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" />

 <xsl:template match="/">
   <xsl:for-each select="//LISTING">
    <xsl:value-of select="RELATION" /><xsl:text>, </xsl:text>
    <xsl:value-of select="FIRST" /><xsl:text>, </xsl:text>
    <xsl:value-of select="LAST" /><xsl:text>, </xsl:text>

    <xsl:if test="ADDRESS">
     <xsl:for-each select="ADDRESS">
       <xsl:choose>
        <xsl:when test="@TYPE">
         <xsl:value-of select="@TYPE" />,
        </xsl:when>
            <xsl:otherwise>
            <xsl:text>Home </xsl:text>
            </xsl:otherwise>
       </xsl:choose>
       <xsl:value-of select="STREET" />, …
Run Code Online (Sandbox Code Playgroud)

xml xslt

45
推荐指数
2
解决办法
6万
查看次数

当属性不存在时,xpath按属性选择

简短的问题:我想选择与属性不匹配的所有节点(@type!='x'),但属性也不存在(??).目前,我什么也没收到,因为其他节点根本没有属性.

背景:我有一些XML.请注意,其中一个具有type ="feature",但所有其他都没有'type'attr.

<image type="feature"><description>X</description><url>media/designer_glass_tile_04.jpg</url><height></height><width/></image>
<image><description>Designer Glass 05</description><url>media/designer_glass_tile_05.jpg</url><height></height><width/></image>
<image><description>Designer Glass 06</description><url>media/designer_glass_tile_06.jpg</url><height></height><width/></image>
<image><description>Designer Glass 07</description><url>media/designer_glass_tile_07.jpg</url><height></height><width/></image>
<image><description>Designer Glass 08</description><url>media/designer_glass_tile_08.jpg</url><height></height><width/></image>
Run Code Online (Sandbox Code Playgroud)

和XSL风格:

        <div id="gallery">
            <div id="feature" >
                <xsl:apply-templates select="image[@type='feature']"/>
            </div>
            <div id="thumbs">
                <xsl:apply-templates select="image[@type!='feature']"/>
            </div>
        </div>
Run Code Online (Sandbox Code Playgroud)

xml xslt xpath

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

标签 统计

xslt ×10

xml ×6

xpath ×3

c# ×1

command-line ×1

javascript ×1

windows ×1

xslt-1.0 ×1

xslt-2.0 ×1