我只是在学习XML以及如何使用XSL文件.在XSL文件中,我发现了以下术语:
xsl:template match="/"
Run Code Online (Sandbox Code Playgroud)
这代表什么?我可以用什么而不是/?我可以写table或任何其他HTML标签而不是/?
我有这样的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) 我正在尝试使用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}.
有人能指出这里似乎有什么问题吗?
我正在使用XPath从网页中提取数据.
我有一个链接,我想得到的href值.我可以通过它唯一的id引用它:id('unique-id')但是这给了我<a>标签之间的字符串.
如何获取href属性的值?
我想在下面的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
我有这个简单的代码:
<xsl:for-each select="GroupsServed">
<xsl:value-of select="."/>,<br/>
</xsl:for-each></font>
Run Code Online (Sandbox Code Playgroud)
我正在尝试为添加的每个项添加逗号.
这有两个缺陷:
您认为解决此问题的最优雅解决方案是什么?
我正在使用XSLT 2.0
我想通过XSLT文件和XSLT处理工具将XML文件更改为修改后的XML文件.
例如: xsltprocess.exe -src a.xml -dest b.xml -xslt c.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) 我使用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) 简短的问题:我想选择与属性不匹配的所有节点(@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) xslt ×10
xml ×6
xpath ×3
c# ×1
command-line ×1
javascript ×1
windows ×1
xslt-1.0 ×1
xslt-2.0 ×1