xslt 相关问题

XSLT是XML的一种转换语言,旨在将结构化文档转换为其他格式(如XML,HTML和纯文本,或者在XSLT 3,JSON中)。问题应该根据需要使用xslt-1.0,xslt-2.0或xslt-3.0标记之一。

警告:无法加载外部实体

我正在使用 X(X -> A)中的目录 A 中的 XSLT 样式表处理 XML 文档,该样式表使用 document() 函数动态构建到 N 中另一个 XML 文档的目录路径......

回答 3 投票 0

根据不同的子模式通过XLST过滤XML

我有一个用户的 xml,每天可以进行多次更改 - 这是由序列号表示的。因此我有以下 XML: 1&...

回答 1 投票 0

转换XML文件时出现“DTD被禁止”异常

我创建了一个自定义 HTMLHelper,它应该呈现解析后的 XML。该方法采用 XML 和 XSL 文件的路径,并应返回 HTML。 当我访问该页面时,出现错误

回答 2 投票 0

如何在JATS和MODS格式之间转换结构化数据?

如何以 FilesAndJATS 打包格式构建文件 jats.xml 中的数据(例如出版物元数据,如作者和标题)https://datahub.deepgreen.org/FilesAndJATS(无法在浏览器中打开...

回答 1 投票 0

将 xml 信息无损存储为 json 的标准方法?

我目前正在开发一个项目,该项目正在从使用存储在 postgresql 中的 XML 数据迁移到存储在 mongodb 中的 json。 问题是:需要保持一定程度的向后兼容性......

回答 1 投票 0

msxsl.exe 的继承者?

我们打算将我们的框架从 msxml4 迁移到 msxml6。 我们目前正在使用 msxsl.exe。 它似乎只支持 MSXML 版本高达 4.0,命令行告诉我: msxsl.exe -u 版本 6.0 难道是……

回答 1 投票 0

XSLT 将 Json 替换为等效的纯文本

ish 在 XSLT 上,并且有一个 XSLT 输出,其中在元素中包含一些 json。 {“代码&

回答 1 投票 0

使用 xslt 从其他 XML 更新或插入相同节点

我有一个源 xml,其中包含一个元素列表,这些元素可能存在于目标 xml 中,也可能不存在,并且目标 xml 有一些其他 xml 元素。要求是使用规则更新第二个 xml :l...

回答 1 投票 0

XSLT 分页 - 默认为当前日期

我正在使用 xslt 转换来显示一长串事件。 它具有分页功能,但我希望它默认显示最接近当前日期的第一个事件。

回答 2 投票 0

使用saxon作为引擎转换XML时出现的问题

我有一个 xslt 将从这里获得的 RFC 列表转换为内部格式(也是 xml 格式)。 xslt 代码非常明显,它包含与......的前两个级别匹配的模板。

回答 1 投票 0

使用 XSLT 转换防止不应该存在的 <li> 标签出现

我无法让我的 XSLT 脚本不提取原始输入文件中的 标签。请从我的输出中查看下面屏幕截图中的红色圆圈区域: 我的脚本部分... 我无法让我的 XSLT 脚本不提取原始输入文件中的 <li> 标签。请从我的输出中查看下面屏幕截图中的红色圆圈区域: 我遇到问题的脚本部分如下: <xsl:template match="xhtml:ol[@property = 'ktp:questionSet']"> <xsl:param name="path"/> <xsl:variable name="content-item-name" select="//xhtml:section/xhtml:span[@property = 'atom:content-item-name']/@data-value"/> <li class="ktp-question" property="ktp:question" typeof="ktp:Question"> <section class="ktp-question-set-meta"> <xsl:apply-templates select="(//xhtml:section[@class = 'ktp-meta' and not(@property = 'ktp:questionSetType')])[position() = 3 or position() = 4]"/> </section> <section property="ktp:stimulus" typeof="ktp:Stimulus" class="ktp-stimulus"> <xsl:apply-templates select="xhtml:li[@class = 'ktp-stimulus']/node()"/> </section> <section class="ktp-question-stem"> <xsl:apply-templates select="//xhtml:section[@class = 'ktp-question-stem']/node()"/> </section> <ol class="ktp-answer-set"> <xsl:apply-templates select="//xhtml:ol[contains(@class, 'ktp-answer-set')]/node()"/> </ol> <section property="ktp:explanation" typeof="ktp:Explanation" class="ktp-explanation"> <xsl:apply-templates select="//xhtml:section[@class = 'ktp-explanation']/node()"/> </section> </li> </xsl:template> 我正在工作的输入文件如下: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8" /> <link href="../../assets/css/main.css" rel="stylesheet" title="default" type="text/css" /> <title>ptalme03</title> </head> <body> <ol class="ktp-question-set" > <li><ol property="ktp:questionSet" typeof="ktp:QuestionSet" class="ktp-question-set"> <li class="ktp-question-set-meta"><section property="ktp:metadata" class="ktp-meta"> <span property="atom:content-item-name" class="ktp-meta" data-value="ptalme03"></span> </section><section property="ktp:tags" class="ktp-meta"> <span property="ktp:questionSetType" class="ktp-meta" >shared-stimulus</span> </section></li> <li property="ktp:stimulus" typeof="ktp:Stimulus" class="ktp-stimulus"><p> <img src="../../img/alpha_images_pt1/SAT_PT_math2_Q3.svg" /> </p></li> <li property="ktp:question" typeof="ktp:Question" class="ktp-question"> <span property="atom:content-item-name" class="ktp-meta" data-value="ptalme03"></span> <section class="ktp-question-meta"> <section class="ktp-meta" property="ktp:metadata"> <span class="ktp-meta" data-value="ptalme03" property="atom:content-item-name"></span> </section> <section class="ktp-meta" property="ktp:tags"> <span class="ktp-meta" property="ktp:interactionType" >single-select</span> <span class="ktp-meta" property="OLD QID">ftm02.03</span> </section> </section><section class="ktp-question-stem"> <p>What is the <i>x</i>-intercept of the graph shown? </p> </section><ol class="ktp-answer-set"> <li property="ktp:answer" typeof="ktp:AnswerCorrect">(−1, 0)</li> </ol><section property="ktp:explanation" typeof="ktp:Explanation" class="ktp-explanation"> <section class="ktp-explanation-section" data-title="Feedback" data-uuid="e955d9441cc051f966008c9d6da75adc" property="ktp:explanation-section" typeof="ktp:feedback"> <p><b>Getting to the Answer:</b> The <i>x</i>-intercept is the point where the graph crosses the <i>x</i>-axis. The graph crosses the <i>x</i>-axis at (−1, 0). <b>(A)</b> is correct. </p> </section> </section> </li> </ol> </li> </ol> </body> </html> 查看问题中包含的 XSLT 模板,它在输出中生成的唯一 li 元素是: <li class="ktp-question" property="ktp:question" typeof="ktp:Question"> ... </li> 在您发布的输出图像中,上述元素是另一个没有属性的 <li> 元素的 子元素。因此,您在图像中圈出的不需要的 <li> 元素不可能由您在问题中包含的模板生成。它是由您未包含的其他模板生成的。 几乎可以肯定,输出中的 <li> 是 <li> 的副本,它作为 <ol class="ktp-question-set" > 元素的子元素出现在输入文件中,并且也是被样式表忽略的元素的父元素: <ol property="ktp:questionSet" typeof="ktp:QuestionSet" class="ktp-question-set">。我猜测省略是由与 ol 匹配的模板引起的,并且在将模板应用于其子元素之前无法复制该元素,因此最终会得到一个 li 作为另一个 li 的子元素。如果您确实想删除 ol,则还必须删除其父级 li。

回答 1 投票 0

XSLT 2.0 - 无法根据条件获取节点的位置号

这是我的源 XML 的简化版本 1234 这是我的源 XML 的简化版本 <?xml version="1.0" encoding="UTF-8"?> <Workers> <Worker> <ID>1234</ID> <Locaitons> <Location> <Primary>N</Primary> <Name>Oslo</Name> </Location> <Location> <Primary>N</Primary> <Name>Munich</Name> </Location> <Location> <Primary>Y</Primary> <Name>London</Name> </Location> <Location> <Primary>Y</Primary> <Name>New York</Name> </Location> </Locaitons> </Worker> <Worker> <ID>6789</ID> <Locaitons> <Location> <Primary>Y</Primary> <Name>Zurich</Name> </Location> <Location> <Primary>N</Primary> <Name>Brisbane</Name> </Location> <Location> <Primary>Y</Primary> <Name>Paris</Name> </Location> <Location> <Primary>Y</Primary> <Name>Toronto</Name> </Location> </Locaitons> </Worker> </Workers> 预期输出是 1234,Oslo,Default,Oslo 1234,Munich,Default,Munich 1234,London,01,,London <!-- 3rd field's position id is 01 --> 1234,New York,02,,New York <!-- 3rd field's position id is 02 --> 6789,Zurich,01,,Zurich <!-- 3rd field's position id is 01 --> 6789,Brisbane,Default,Brisbane 6789,Paris,02,,Paris <!-- 3rd field's position id is 02 --> 6789,Toronto,03,,Toronto <!-- 3rd field's position id is 03 --> 我的尝试是 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs=" http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0"> <xsl:variable name="linefeed" select="'&#13;&#10;'"/> <xsl:output method="text" encoding="UTF-8"/> <xsl:variable name="delimiter" select="','"/> <xsl:template match="Workers"> <xsl:for-each select="Worker/Locaitons/Location"> <xsl:call-template name="rec"/> </xsl:for-each> </xsl:template> <xsl:template name="rec"> <xsl:value-of select="../../ID"/> <xsl:value-of select="$delimiter"/> <xsl:value-of select="Name"/> <xsl:value-of select="$delimiter"/> <xsl:choose> <xsl:when test="Primary='Y'"> <xsl:value-of select="format-number(position(),'00')"/> <xsl:value-of select="$delimiter"/> </xsl:when> <xsl:when test="Primary='N'"> <xsl:text>Default</xsl:text> </xsl:when> <xsl:otherwise></xsl:otherwise> </xsl:choose> <xsl:value-of select="$delimiter"/> <xsl:value-of select="Name"/> <xsl:value-of select="'&#10;'"/> </xsl:template> </xsl:stylesheet> 当前输出为 1234,Oslo,Default,Oslo 1234,Munich,Default,Munich 1234,London,03,,London <!-- correct value for 3rd field should be 01 --> 1234,New York,04,,New York <!-- correct value for 3rd field should be 02 --> 6789,Zurich,05,,Zurich <!-- correct value for 3rd field should be 01 --> 6789,Brisbane,Default,Brisbane 6789,Paris,07,,Paris <!-- correct value for 3rd field should be 02 --> 6789,Toronto,08,,Toronto <!-- correct value for 3rd field should be 03 --> 节点 1,2,3 等的位置 id 应根据元素 <Primary> = Y 的值填充。我无法在 Primary = Y 中添加条件 <xsl:for-each select="Worker/Locaitons/Location[Primary='Y']">,因为我正在 rec 模板内执行其他几个验证。 任何帮助以获得所需的输出表示赞赏? 谢谢! 当您调用 position() 函数时,您将在之前的 <xsl:for-each select="Worker/Locaitons/Location"> 建立的“动态上下文”中找到上下文节点的位置。因此,该数字反映了 Location 在作为 Location 元素后代的所有 Workers 元素的序列中的位置。 在我看来,您想要 Location 在其父 Locaitons 元素中的位置(顺便说一句,该元素的名称拼写错误)。这将由表达式 1 + count(preceding-sibling::Location) 给出。例如 <xsl:value-of select="format-number(1 + count(preceding-sibling::Location),'00')"/>

回答 1 投票 0

编译为xslt?

这个问题的答案很可能是否定的,因为大量的搜索却一无所获。我以为我很久以前就看到过类似的东西,但这一切可能都是海市蜃楼。 基本上,这太可怕了

回答 5 投票 0

如何使用 XSLT 3.0 将 XML 转换为 JSON

下面是我的输入 XML,需要使用 XSLT 3.0 将其转换为下面的输出 JSON。 使用下面的 XSLT 代码,它仅给出值,但不给出 JSON 字段名称。你能帮我吗...

回答 1 投票 0

如何对 xslt 中的位置重新编号

我想询问如何通过 XSLT 对 PARENTID 中的 LINENUM 和引用重新编号。 LINENUM 的顺序应该正确。目前有1,4,5,因为使用了position() wh...

回答 1 投票 0

使用 HTML/XML/XSLT/AJAX 的可滚动电视指南

我正在尝试创建一个电视指南,类似于大多数已经存在的电视指南(http://www.freeview.co.uk/whats-on/tv-guide) - 当您单击下一步时,它会显示下一个x 小时数。问题是,我...

回答 1 投票 0

XSLT:如何检查重复条目并仅返回具有活动状态的条目(对于具有重复的条目)?

我正在尝试输出一个文本文件,该文件将删除重复项,并仅返回该 id 重复项的活动文件。 **例如,如果我在 xml 中有 2 个条目,但条目具有相同的 ID,则仅...

回答 1 投票 0

XSLT:如何检查重复条目并仅返回具有重复的 id 的活动状态的 id

我正在尝试输出一个文本文件,该文件将删除重复项,并仅返回该 id 重复项的活动文件。 **例如,如果我在 xml 中有 2 个条目,但条目具有相同的 ID,则仅...

回答 1 投票 0

XSLT:如何检查重复并仅返回具有重复的 id 的活动状态的 id

我正在尝试输出一个文本文件,该文件将删除重复项并仅返回活动状态。 例如: 1 不活跃 我正在尝试输出一个文本文件,该文件将删除重复项并仅返回活动状态。 例如: <Report_Data> <Report_Entry> <id>1</wd:id> <status>Inactive</status> <Report_Entry> <Report_Entry> <id>1</wd:id> <status>Active</status> <Report_Entry> <Report_Entry> <id>3</wd:id> <status>Active</status> <Report_Entry> <Report_Entry> <id>4</wd:id> <status>Inactive</status> <Report_Entry> 我尝试使用 xsl:for-each-group 和 group-by 但没有达到结果。 <xsl:template match="Report_Data"> <row> <text>id|status</text> <xsl:value-of select="$newline"/> </row> <xsl:for-each-group select="Report_Entry" group-by="id[../status='Active']"> <row> <id> <xsl:value-of select="id"/> <xsl:value-of select="$delimiter"/> </id> <status> <xsl:value-of select="status"/> </status> </row> 输出为: id|status 1|Active 3|Active 但是期望的输出是 id|status 1|Active 3|Active 4|Inactive 尝试了此代码,但也返回了错误的输出 <xsl:for-each-group select="Report_Entry[status='Active']" group-by="id"> 提前致谢。 :) 你的问题不太清楚。也许这样的东西适合你: <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text"/> <xsl:template match="/Report_Data"> <xsl:text>id|status&#10;</xsl:text> <xsl:for-each-group select="Report_Entry" group-by="id"> <xsl:value-of select="id"/> <xsl:text>|</xsl:text> <xsl:value-of select="if(current-group()/status='Active') then 'Active' else 'Inactive'"/> <xsl:text>&#10;</xsl:text> </xsl:for-each-group> </xsl:template> </xsl:stylesheet>

回答 1 投票 0

XSLT:如何检查重复并仅返回具有活动状态的ID

我正在尝试输出一个文本文件,该文件将删除重复项并仅返回活动状态。 例如: 1 不活跃 我正在尝试输出一个文本文件,该文件将删除重复项并仅返回活动状态。 例如: <Report_Data> <Report_Entry> <id>1</wd:id> <status>Inactive</status> <Report_Entry> <Report_Entry> <id>1</wd:id> <status>Active</status> <Report_Entry> <Report_Entry> <id>3</wd:id> <status>Active</status> <Report_Entry> <Report_Entry> <id>4</wd:id> <status>Inactive</status> <Report_Entry> 我尝试使用 xsl:for-each-group 和 group-by 但没有达到结果。 <xsl:template match="Report_Data"> <row> <text>id|status</text> <xsl:value-of select="$newline"/> </row> <xsl:for-each-group select="Report_Entry" group-by="id[../status='Active']"> <row> <id> <xsl:value-of select="id"/> <xsl:value-of select="$delimiter"/> </id> <status> <xsl:value-of select="status"/> </status> </row> 输出为: id|status 1|Active 3|Active 但是期望的输出是 id|status 1|Active 3|Active 4|Inactive 尝试了此代码,但也返回了错误的输出 <xsl:for-each-group select="Report_Entry[status='Active']" group-by="id"> 提前致谢。 :) 你的问题不太清楚。也许这对你有用: <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text"/> <xsl:template match="/Report_Data"> <xsl:text>id|status&#10;</xsl:text> <xsl:for-each-group select="Report_Entry" group-by="id"> <xsl:value-of select="id"/> <xsl:text>|</xsl:text> <xsl:value-of select="if(current-group()/status='Active') then 'Active' else 'Inactive'"/> <xsl:text>&#10;</xsl:text> </xsl:for-each-group> </xsl:template> </xsl:stylesheet>

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.