我有一个XML文件
<ns0:Employees xmlns:ns0="http://TestIndexMap.Employees">
<Employee FirstName="FirstName_0" LastName="LastName_1" dept="dept_2" empNumber="1">
<Schedules>
<Schedule Date_join="2008-01-20" Date_end="2008-01-30" />
</Schedules>
</Employee>
<Employee FirstName="FirstName_0" LastName="LastName_1" dept="dept_2" empNumber="2">
<Schedules>
<Schedule Date_join="2008-01-20" Date_end="2008-01-30" />
</Schedules>
</Employee>
<Employee FirstName="FirstName_2" LastName="LastName_1" dept="dept_2" empNumber="2">
<Schedules>
<Schedule Date_join="2007-01-21" Date_end="2007-12-30" />
</Schedules>
</Employee>
<Employee FirstName="FirstName_2" LastName="LastName_1" dept="dept_2" empNumber="2">
<Schedules>
<Schedule Date_join="2007-01-21" Date_end="2007-12-30" />
<Schedule Date_join="2008-06-20" Date_end="2008-01-30" />
</Schedules>
</Employee>
</ns0:Employees>
Run Code Online (Sandbox Code Playgroud)
我想根据fistname,姓氏和date_join以及data_end删除重复项.
请问,有人可以解释如何使用XSLT实现这一目标吗?
使用XSLT 1.0,给定一个包含任意字符的字符串,如何找回符合以下规则的字符串.
在XSLT中,我将一些属性转换为元素,但我需要确保该属性不包含任何不能在元素名称中使用的值.我不关心转换为名称的属性的完整性,只要它被可预测地转换.我也不需要补偿元素名称中的每个有效字符(有一堆).
我遇到的问题是有空格的属性,translate函数可以很容易地转换为下划线:
translate(@name,' ','_')
Run Code Online (Sandbox Code Playgroud)
但是不久之后我发现了一些使用斜杠的属性,所以我现在也必须添加它.这很快就会失控.我希望能够定义允许字符的白名单,并用下划线替换任何不允许的字符,但翻译可以通过替换黑名单来实现.
我是 xslt 的新手,我正在做一个聊天应用程序,我想将用户会话保存为 xml 文件,这些文件以用户预定义的颜色和字体显示,所以我使用 xslt 来实现这一点,但我不知道如何从 xml 中获取字体并将其应用到 html 标记中,以便它以用户选择的字体显示。
<xsl:choose>
<xsl:when test="/body/msg[italic/text()='true']">
<i>
<font family="/body/msg[font/text()] color="/body/msg/color">
<xsl:value-of select="from" /><p>: </p>
<xsl:value-of select="content"/><br/>
</font>
</i>
</xsl:when>
<xsl:when test="/body/msg[bold/text()='true']">
<b>
<font family="/body/msg[font/text()]" color="/body/msg/color">
<xsl:value-of select="from" /><p>: </p>
<xsl:value-of select="content"/><br/>
</font>
</b>
</xsl:when>
<xsl:when test="/body/msg[bold/text()='true'] and /body/msg[italic/text()='true']">
<b>
<i>
<font family="/body/msg[font/text()]" color="/body/msg/color">
<xsl:value-of select="from" /><p>: </p>
<xsl:value-of select="content"/><br/>
</font>
</i>
</b>
</xsl:when>
</xsl:choose>
Run Code Online (Sandbox Code Playgroud) 我想更改 WSO2 ESB 中的 xml 节点名称,即。我有以下 xml
<MessageStatus xmlns="foo.example.org">
<ErrorCode>$1</ErrorCode>
<Message>$2</Message>
</MessageStatus>
我希望它是这样的
<ItemName xmlns="foo.example.org">
<ErrorCode>$1</ErrorCode>
<Message>$2</Message>
</ItemName>
以 ItemNames 作为属性;我的意思是它们会动态变化。有什么方法可以使用 ESB 中介器进行此更改吗?
我正在解析 XML 文档并使用它创建 HTML 列表。我遇到过一种情况,我需要从 XML 数据中创建一个多级列表。例如:
1. One
2. Two
2.1. Three
2.2. Four
2.2.1. Five
2.2.2. Six
2.3. Seven
3. Eight
Run Code Online (Sandbox Code Playgroud)
是否可以最好使用 HTML 创建这样的结构<ul>-<li>s?我遇到过一些建议在 CSS 中使用的解决方案counter-incretemnt, counter-reset,但问题是由于 XML 的结构,这种解决方案对于我的情况不可行,而且使用 XSLT 编写它会非常困难。
谁能建议我解决这个问题?
注意:列表的级别没有限制!
提前谢谢!
编辑:为上述所需的 HTML 列表添加示例 XML:
<ele lvl="0">
One
</ele>
<ele lvl="0">
Two
</ele>
<ele lvl="1">
Three
</ele>
<ele lvl="1">
Four
</ele>
<ele lvl="2">
Five
</ele>
<ele lvl="2">
Six
</ele>
<ele lvl="1">
Seven
</ele>
<ele lvl="0">
Eight
<ele>
Run Code Online (Sandbox Code Playgroud) 我创建了包含 html 标签的 xml,如下所示。我尝试根据我的xslt将所有xml数据转换为html。但是,我无法处理 xml 中包含的 html 标签。我需要获取所写的摘要标签中的任何内容(不丢失 html 标签)。我应该怎么办 ?
<checklist name="00.07-Parts">
<summary>
<table border="1" cellpadding="7" cellspacing="0" style="width:100%">
<tbody>
<tr>
<td>
<p><strong> aaaaaaa </strong></p>
</td>
<td>
<p><strong> bbbbbbbb </strong></p>
</td>
</tr>
</tbody>
</table>
</summary>
</checklist>
Run Code Online (Sandbox Code Playgroud)
这是我的 XSLT 部分
<xsl:for-each select="checklist">
<table class="tbChecklist">
<tbody>
<tr>
<td>
<h4>
<xsl:value-of select="@name"/>
</h4>
</td>
</tr>
<tr>
<td>
<xsl:value-of select="summary"/>
</td>
</tr>
</tbody>
</table>
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)
这是结果
<table class="tbChecklist">
<tbody>
<tr>
<td>
<h4>00.07-Parts</h4>
</td>
</tr>
<tr>
<td>
aaaaaaa
bbbbbbbb
<td>
<tr>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud) 我在 XSLT 中使用 or 运算符时遇到问题。我需要测试变量是否不等于 00 或 09。
当前输入 XSLT 的 Timecodehour 值为 09。我使用下面的测试来确认该值必须是 00 或 09。
<xsl:template match="/">
<xsl:if test="$TimecodeHour!='00' or $TimecodeHour!='09'">
<xsl:message terminate="yes">Timecode is not supported</xsl:message>
</xsl:if>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)
如果我删除了“$TimecodeHour!='00' or”,但提交的消息“时间码在我再次添加时不受支持”,则测试会正确完成。有人可以帮助我理解我做错了什么吗?
我正在查看我的同事创建的 XSLT 文件,它包含以下代码片段:
<xsl:for-each select="/vpf:Msg/vpf:Body/vpf:Payload[./@id='atom6']/row/DocEntry[not(.=preceding::*)]">
<DocEntry>
<xsl:value-of select="."></xsl:value-of>
</DocEntry>
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)
[not(.=preceding::*]
在阅读了一些关于锚点的用法之后,我很难理解这部分preceding,在我看来,这部分根本没有做任何事情。有人可以帮助我了解我的同事可能想在这里做什么吗?
任何人都可以发布详细的分步说明,说明如何安装 Saxon (10 HE) 以及如何从 MacOS (10.13.6) 中的命令行运行转换?
我已经在我的电脑上安装了Java。
我已经SaxonHE10-6J.zip从 SourceForge 下载了该文件。
根据此处的建议,我已将其放入文件夹saxon-he-10.6.jar中 myUserName/Library/Java/Extensions。然后我打开终端应用程序并输入基于此答案的
命令:
java -jar saxon-he-10.6.jar -'/Users/myUserName/Documents/path/to/mystylesheet.xsl' -s:'/Users/myUserName/Documents/path/to/some.xml'
Run Code Online (Sandbox Code Playgroud)
这导致:
Unable to access jarfile saxon-he-10.6.jar
Run Code Online (Sandbox Code Playgroud)
我的所有尝试(包括将 .jar 文件移动到/Library/Java/Extensions 目录或在命令中包含 .jar 文件的完整路径)都失败了,并出现相同的错误消息。
请注意,我不是 Java 开发人员,我不打算在应用程序中使用它。我想要的只是能够偶尔进行一次转变。
我还应该注意,XML 和 XSLT 文件的位置可能会因情况而异。我希望能够将 .jar 文件保留在恒定位置,并根据需要提供 XML 和 XSLT 文件的路径 - IOW,我想要一个命令模板,我只需要更改 2 个文件路径(并且可能为转换添加一些选项)。
我需要做什么?
采用以下 XSLT 代码:
\n<?xml version="1.0" encoding="UTF-8"?>\n<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"\n version="2.0">\n <xsl:output method="text"/>\n <xsl:template match="/">\n <xsl:value-of select="translate('abc', 'e\xcc\x81abc', 'eabc')"/> <!--0x65CC81-->\n <xsl:value-of select="' '"/>\n <xsl:value-of select="translate('abc', '\xc3\xa9abc', 'eabc')"/> <!--0xC3A9-->\n </xsl:template>\n</xsl:stylesheet>\nRun Code Online (Sandbox Code Playgroud)\n使用 Saxon 10 运行此命令会返回:
\nbc\nabc\nRun Code Online (Sandbox Code Playgroud)\n翻译函数的第一次调用使用 \xc3\xa9 的分解形式(U+0065 和 U+0301),而第二次调用则使用 U+00E9。看来他们并没有受到平等的对待。这是可以预料的吗?这种行为是否在某处指定?
\n