xslt 相关问题

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

如何按照计划代码的顺序获取每个元素值

我需要表行应按照代码值的顺序获取 输入 xml 我有: 20000 我需要表行应按照代码值的顺序获取 输入我有的xml: <Group> <Maps> <Map> <Code>20000</Code> </Map> <Map> <Code>30000</Code> </Map> </Maps> <Details> <Detail> <Code>30000</Code> <Description>Benefit</Description> </Detail> <Detail> <Code>20000</Code> <Description>Non-Benefit</Description> </Detail> </Details> </Group> XSL 我已经使用变量尝试了以下操作: <xsl:template match="Group"> <xsl:variable name="MapCode" select="Maps/Map/Code"/> <row> <entry>Code</entry> <xsl:for-each select="Maps/Map"> <entry> <p> <xsl:value-of select="Code"/> </p> </entry> </xsl:for-each> </row> <row> <entry>Level</entry> <xsl:for-each select="Details/Detail[Code=$MapCode]"> <entry> <p> <xsl:value-of select="Description"/> </p> </entry> </xsl:for-each> </row> </xsl:template> 我得到的实际输出: <row> <entry>Code</entry> <entry> <p>20000</p> </entry> <entry> <p>30000</p> </entry> </row> <row> <entry>Level</entry> <entry> <p>Benefit</p> </entry> <entry> <p>Non-Benefit</p> </entry> </row> 预期输出应该是: <row> <entry>Code</entry> <entry> <p>20000</p> </entry> <entry> <p>30000</p> </entry> </row> <row> <entry>Level</entry> <entry> <p>Non-Benefit</p> </entry> <entry> <p>Benefit</p> </entry> </row> 根据 Code 订单匹配,应选择 Description 值。我将变量用于 Code 匹配。但它仍然错误地选择了 Description 值。所以描述应该按照代码顺序选择。 我猜你想做类似的事情: XSLT 2.0 <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:key name="detail-by-code" match="Detail" use="Code" /> <xsl:template match="/Group"> <xsl:variable name="headings" select="Maps/Map" /> <table> <!-- header --> <row> <xsl:for-each select="$headings"> <entry> <p> <xsl:value-of select="Code"/> </p> </entry> </xsl:for-each> </row> <!-- data --> <xsl:for-each select="Details"> <xsl:variable name="current-row" select="." /> <row> <xsl:for-each select="$headings"> <entry> <p> <xsl:value-of select="key('detail-by-code', Code, $current-row)"/> </p> </entry> </xsl:for-each> </row> </xsl:for-each> </table> </xsl:template> </xsl:stylesheet>

回答 1 投票 0

XML 节点值的 OR 条件

我需要检查XML节点的值。 但为什么这不起作用呢? 我需要检查XML节点的值。 但为什么这不起作用? <xsl:if test="(applicationData/remittingAccount/paymentMethodCode != 'ABC' or applicationData/remittingAccount/paymentMethodCode != 'XYZ')"> 我也尝试过这个 <xsl:if test="(applicationData/remittingAccount/paymentMethodCode != 'ABC') or (applicationData/remittingAccount/paymentMethodCode != 'XYZ')"> 还有这个 <xsl:if test="applicationData/remittingAccount/paymentMethodCode != 'ABC' or applicationData/remittingAccount/paymentMethodCode != 'XYZ'"> 请帮忙! 您还没有解释您想要检查的内容,但是那些在 XPath 通用比较运算符的语义上苦苦挣扎的人可能想要检查,例如not(applicationData/remittingAccount/paymentMethodCode = ('ABC', 'XYZ')) 而不是你的尝试。仅当 applicationData/remittingAccount/paymentMethodCode 都不等于 ABC 或 XYZ 时,该检查才为真。 测试: test="node != 'ABC' or node != 'XYZ'" 当节点不存在时,将返回 false only。 在所有其他情况下,即使只有一个节点,测试也始终为 true - 因为节点的字符串值不能同时为“ABC”和“XYZ”,因此至少其中一个语句将说实话。 您可能正在寻找 test="not(node = 'ABC' or node = 'XYZ')" 如果没有节点具有这些字符串值,则为真。

回答 2 投票 0

具有多个 LineItems 的 Xml 到 Json

我正在尝试将 xml 转换为 json,但在 xml 到 json 转换期间未形成多个行项目。我们总是在 xml 消息中包含单个或多个 Lineitem,其名称与“vpoItemLi...

回答 1 投票 0

如何通过编辑XSL样式检查单词参考书目参考条目,如果未填写则显示错误

参考以下MS提供的指南: MS 参考书目样式编辑指南 以及 IEEE 参考样式 IEEE xsl 样式文件。 我正在定制 IEEE 参考书目

回答 1 投票 0

XSL根据条件选择正确的子字符串

我正在从一个带有 ' ' 分隔符的简单 2 子字符串过渡,该分隔符当前使用前子字符串和后子字符串,但现在我需要修改它以容纳多个子字符串...

回答 1 投票 0

IE11 XSLT 将 <param> 节点转换为自闭标签而不关闭

这个问题与此非常相关 输出到 DOM 时,XSLT 将 节点转换为 标签 考虑这段代码: <question vote="0"> <p>这个问题与此非常相关 <a href="https://stackoverflow.com/questions/78266294/xslt-converts-image-node-to-img-tag-when-outputiing-to-dom">XSLT 在输出到 DOM 时将 <image> 节点转换为 <img> 标签</a></p> <p>考虑这段代码:</p> <pre><code>&lt;script type=&#34;application/xml&#34; id=&#34;data&#34;&gt; &lt;xsl:copy-of select=&#34;/*&#34; /&gt; &lt;/script&gt; </code></pre> <p>这会将 XML 文档的内容输出到 html 页面中。 然后,可以很容易地通过 javascript 的 DOMParser() 对象解析 XML 中的数据,从而可以在网页上轻松访问这些数据,而无需使用 XSLT 生成网页。</p> <p>需要在脚本标签之间移动 <xsl:copy-of select"/*" />,以防止 XSLT 转换器将 XML 文件中的节点转换为 HTML 中的标签。</p> <p>这工作得很好,直到我发现节点也发生了同样的情况。简单地说:如果 XML 有节点,输出将被破坏且无法解析,如下所示:</p> <p><a href="https://i.stack.imgur.com/Ns44i.png" target="_blank"><img src="https://cdn.txt58.com/i/AWkuc3RhY2suaW1ndXIuY29tL05zNDRpLnBuZw==" alt=""/></a></p> <p>如何防止这种行为?如何阻止浏览器引擎使标签成为自关闭标签?</p> <pre><code>new DOMParser().parseFromString() </code></pre> <p>/\ 不适用于自关闭节点。 (<strong>澄清</strong>:显然 DOMParser 将与自关闭节点一起工作,只是在这种情况下它不是自关闭的,即 - 没有正斜杠)</p> <hr/> <p>好的,这里是重现此内容所需的文件:</p> <p>测试.xslt</p> <pre><code>&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt; &lt;xsl:stylesheet xmlns:xsl=&#34;http://www.w3.org/1999/XSL/Transform&#34; version=&#34;1.0&#34;&gt; &lt;xsl:output method=&#34;html&#34; indent=&#34;no&#34; version=&#34;5.0&#34; /&gt; &lt;xsl:template match=&#34;/&#34;&gt; &lt;xsl:text disable-output-escaping=&#39;yes&#39;&gt;&amp;lt;!DOCTYPE html&gt;&lt;/xsl:text&gt; &lt;xsl:apply-templates select=&#34;root&#34; /&gt; &lt;/xsl:template&gt; &lt;xsl:template match=&#34;root&#34;&gt; &lt;html&gt; &lt;head&gt; &lt;script type=&#39;application/xml&#39;&gt; &lt;xsl:copy-of select=&#34;/*&#34; /&gt; &lt;/script&gt; &lt;/head&gt; &lt;body&gt; &lt;div&gt;qwe&lt;/div&gt; &lt;/body&gt; &lt;/html&gt; &lt;/xsl:template&gt; &lt;/xsl:stylesheet&gt; </code></pre> <p>测试.xml</p> <pre><code>&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt; &lt;?xml-stylesheet type=&#34;text/xsl&#34; href=&#34;test.xslt&#34;?&gt; &lt;root&gt; &lt;object&gt; &lt;text&gt;text&lt;/text&gt; &lt;param name=&#34;name&#34;&gt;&lt;/param&gt; &lt;/object&gt; &lt;/root&gt; </code></pre> <p>在 Internet Explorer 11 兼容模式下使用 Edge 打开 test.xml。 “head”应该包含一个带有扭曲 xml 的脚本。</p> <p><a href="https://i.stack.imgur.com/N6RRV.png" target="_blank"><img src="https://cdn.txt58.com/i/AWkuc3RhY2suaW1ndXIuY29tL042UlJWLnBuZw==" alt=""/></a></p> <p>在 Windows 10 上,打开 xml 文件后,您可以通过执行“运行 (Win+R)”->“%systemroot%\system32 12\IEChooser.exe”来打开开发人员工具</p> </question> <answer tick="true" vote="1"> <p>至于我的建议,要使用该库进行序列化,其外观如下(在实际使用中,不要通过 HTTP(S) 导入,请使用本地副本 <pre><code>xsl:import</code></pre>):</p> <pre><code>&lt;xsl:stylesheet xmlns:xsl=&#34;http://www.w3.org/1999/XSL/Transform&#34; version=&#34;1.0&#34;&gt; &lt;xsl:import href=&#34;https://lenzconsulting.com/xml-to-string/xml-to-string.xsl&#34;/&gt; &lt;xsl:output method=&#34;html&#34; indent=&#34;no&#34; version=&#34;5.0&#34; doctype-system=&#34;about:legacy-doctype&#34; /&gt; &lt;xsl:template match=&#34;/&#34;&gt; &lt;xsl:apply-templates/&gt; &lt;/xsl:template&gt; &lt;xsl:template match=&#34;root&#34;&gt; &lt;html&gt; &lt;head&gt; &lt;script type=&#39;application/xml&#39;&gt; &lt;xsl:apply-templates select=&#34;.&#34; mode=&#34;xml-to-string&#34;/&gt; &lt;/script&gt; &lt;/head&gt; &lt;body&gt; &lt;div&gt;qwe&lt;/div&gt; &lt;/body&gt; &lt;/html&gt; &lt;/xsl:template&gt; &lt;/xsl:stylesheet&gt; </code></pre> <p>这应该给你一个 <pre><code>script</code></pre> 元素,它的文本/CDATA 内容具有输入文档的 <pre><code>root</code></pre> 元素的序列化。</p> <p>至于序列化空元素的方式,在 XML 中应该不重要,但库允许您设置 <pre><code>&lt;xsl:param name=&#34;use-empty-syntax&#34; select=&#34;false()&#34;/&gt;</code></pre> 来获取例如<pre><code>&lt;param name=&#34;name&#34;&gt;&lt;/param&gt;</code></pre>。</p> </answer> </body></html>

回答 0 投票 0

XSLT 1.0 追踪 XML 对象的继承树

我正在编写一个 XSLT 以将 XML 模式转换为 Python 类。该模式具有深入七到八个类的深层继承树,我需要从...开始编写输出

回答 1 投票 0

IE11 XSLT 将 <param> 节点转换为自闭合标签

这个问题与此非常相关 输出到 DOM 时,XSLT 将 节点转换为 标签 考虑这段代码: <question vote="0"> <p>这个问题与此非常相关 <a href="https://stackoverflow.com/questions/78266294/xslt-converts-image-node-to-img-tag-when-outputiing-to-dom">XSLT 在输出到 DOM 时将 <image> 节点转换为 <img> 标签</a></p> <p>考虑这段代码:</p> <pre><code>&lt;script type=&#34;application/xml&#34; id=&#34;data&#34;&gt; &lt;xsl:copy-of select=&#34;/*&#34; /&gt; &lt;/script&gt; </code></pre> <p>这会将 XML 文档的内容输出到 html 页面中。 然后,可以很容易地通过 javascript 的 DOMParser() 对象解析 XML 中的数据,从而可以在网页上轻松访问这些数据,而无需使用 XSLT 生成网页。</p> <p>需要在脚本标签之间移动 <xsl:copy-of select"/*" />,以防止 XSLT 转换器将 XML 文件中的节点转换为 HTML 中的标签。</p> <p>这工作得很好,直到我发现节点也发生了同样的情况。简单地说:如果 XML 有节点,输出将被破坏且无法解析,如下所示:</p> <p><a href="https://i.stack.imgur.com/Ns44i.png" target="_blank"><img src="https://cdn.txt58.com/i/AWkuc3RhY2suaW1ndXIuY29tL05zNDRpLnBuZw==" alt=""/></a></p> <p>如何防止这种行为?如何阻止浏览器引擎使标签成为自关闭标签?</p> <pre><code>new DOMParser().parseFromString() </code></pre> <p>/\ 不适用于自关闭节点。</p> <hr/> <p>好的,这里是重现此内容所需的文件:</p> <p>测试.xslt</p> <pre><code>&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt; &lt;xsl:stylesheet xmlns:xsl=&#34;http://www.w3.org/1999/XSL/Transform&#34; version=&#34;1.0&#34;&gt; &lt;xsl:output method=&#34;html&#34; indent=&#34;no&#34; version=&#34;5.0&#34; /&gt; &lt;xsl:template match=&#34;/&#34;&gt; &lt;xsl:text disable-output-escaping=&#39;yes&#39;&gt;&amp;lt;!DOCTYPE html&gt;&lt;/xsl:text&gt; &lt;xsl:apply-templates select=&#34;root&#34; /&gt; &lt;/xsl:template&gt; &lt;xsl:template match=&#34;root&#34;&gt; &lt;html&gt; &lt;head&gt; &lt;script type=&#39;application/xml&#39;&gt; &lt;xsl:copy-of select=&#34;/*&#34; /&gt; &lt;/script&gt; &lt;/head&gt; &lt;body&gt; &lt;div&gt;qwe&lt;/div&gt; &lt;/body&gt; &lt;/html&gt; &lt;/xsl:template&gt; &lt;/xsl:stylesheet&gt; </code></pre> <p>测试.xml</p> <pre><code>&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt; &lt;?xml-stylesheet type=&#34;text/xsl&#34; href=&#34;test.xslt&#34;?&gt; &lt;root&gt; &lt;object&gt; &lt;text&gt;text&lt;/text&gt; &lt;param name=&#34;name&#34;&gt;&lt;/param&gt; &lt;/object&gt; &lt;/root&gt; </code></pre> <p>在 Internet Explorer 11 兼容模式下使用 Edge 打开 test.xml。 “head”应该包含一个带有扭曲 xml 的脚本。</p> <p><a href="https://i.stack.imgur.com/N6RRV.png" target="_blank"><img src="https://cdn.txt58.com/i/AWkuc3RhY2suaW1ndXIuY29tL042UlJWLnBuZw==" alt=""/></a></p> <p>在 Windows 10 上,打开 xml 文件后,您可以通过执行“运行 (Win+R)”->“%systemroot%\system32 12\IEChooser.exe”来打开开发人员工具</p> </question> <answer tick="false" vote="0"> <p>至于我的建议,要使用该库进行序列化,其外观如下(在实际使用中,不要通过 HTTP(S) 导入,请使用本地副本 <pre><code>xsl:import</code></pre>):</p> <pre><code>&lt;xsl:stylesheet xmlns:xsl=&#34;http://www.w3.org/1999/XSL/Transform&#34; version=&#34;1.0&#34;&gt; &lt;xsl:import href=&#34;https://lenzconsulting.com/xml-to-string/xml-to-string.xsl&#34;/&gt; &lt;xsl:output method=&#34;html&#34; indent=&#34;no&#34; version=&#34;5.0&#34; doctype-system=&#34;about:legacy-doctype&#34; /&gt; &lt;xsl:template match=&#34;/&#34;&gt; &lt;xsl:apply-templates/&gt; &lt;/xsl:template&gt; &lt;xsl:template match=&#34;root&#34;&gt; &lt;html&gt; &lt;head&gt; &lt;script type=&#39;application/xml&#39;&gt; &lt;xsl:apply-templates select=&#34;.&#34; mode=&#34;xml-to-string&#34;/&gt; &lt;/script&gt; &lt;/head&gt; &lt;body&gt; &lt;div&gt;qwe&lt;/div&gt; &lt;/body&gt; &lt;/html&gt; &lt;/xsl:template&gt; &lt;/xsl:stylesheet&gt; </code></pre> <p>这应该为您提供一个 <pre><code>script</code></pre> 元素,其文本/CDATA 内容具有输入文档的 <pre><code>root</code></pre> 元素的序列化。</p> </answer> </body></html>

回答 0 投票 0

使用带有额外命名空间的 XSLT 有条件地复制 XML 元素?

我有一个以这些行开头的 XML 我有一个以这些行开头的 XML <?xml version="1.0" encoding="utf-8"?> <TRANSFER xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.interlis.ch/INTERLIS2.3" xmlns="http://www.interlis.ch/INTERLIS2.3"> <HEADERSECTION VERSION="2.3" SENDER="ACME"> <MODELS> <MODEL NAME="DSS_2015_LV95" VERSION="13.11.2018" URI="http://www.vsa.ch/models" /> </MODELS> </HEADERSECTION> <DATASECTION> <DSS_2015_LV95.Siedlungsentwaesserung BID="999"> <DSS_2015_LV95.Siedlungsentwaesserung.Abwasserbauwerk_Text_123> <TextPos> <COORD> ..... <DSS_2015_LV95.Siedlungsentwaesserung.Abwasserbauwerk_Text_123> <TextPos> <COORD> ..... <DSS_2015_LV95.Siedlungsentwaesserung.Abwasserbauwerk_Text_456> <Value> <Price> ..... <DSS_2015_LV95.Siedlungsentwaesserung.Abwasserbauwerk_Text_789> <Text> <Cost> ..... 我找到了很多示例(还有一个帮助我使用特殊命名空间的示例..)“复制除 ....123 之外的所有内容”: 制作一个复制所有内容的模板 添加第二个模板,忽略“...123” 但现在我有相反的任务“仅复制...123”,包括。标头并考虑名称空间。上面描述的方式 - “复制除 456 和 789 之外的所有内容” - 不能使用,因为我不知道要忽略什么。 我没有显示我尝试过的代码(基于 xsl:copy ..),因为它是一个令人困惑的垃圾集合,但我搞乱了匹配和选择.. 我希望我的描述是可以理解的 - 对于我的不专业知识感到抱歉,并提前非常感谢。 根据您最新的评论,您可能想要类似的东西 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:il="http://www.interlis.ch/INTERLIS2.3"> <xsl:template match="il:DATASECTION//node()[not(descendant-or-self::il:DSS_2015_LV95.Siedlungsentwaesserung.Abwasserbauwerk_Text_123|ancestor::il:DSS_2015_LV95.Siedlungsentwaesserung.Abwasserbauwerk_Text_123)]"/> <xsl:template match="@* | node()"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet> 未指定的是,如果根本没有 DATASECTION,是否要将空 DSS_2015_LV95.Siedlungsentwaesserung.Abwasserbauwerk_Text_123 复制到输出,或者在这种情况下 DATASECTION 元素是否不应出现在输出中。如果没有 DATASECTION 子代或后代,发布的代码将创建一个空的 DSS_2015_LV95.Siedlungsentwaesserung.Abwasserbauwerk_Text_123。

回答 1 投票 0

从不同的子节点 XSLT 填充递归元素

我正在尝试向下查看 XML 文档中的某个级别,选择不同的值并为每个不同的值填充新元素。例如。获取输入 xml <

回答 1 投票 0

在 XSLT 模板中,如果名称以元音开头,我需要在名称前添加“'l”前缀

在 XSLT 模板中,我将像这样扩展输入变量: 但如果 $ClubName 以元音开头,我需要加上 l' 前缀 我想那里...

回答 1 投票 0

XSLT 1.0 复制并删除节点

我必须复制一个节点(Set_Item/ForwarderReferenceNumber)以防倍增,然后删除我们从中获取值的节点“Set_Item”。 找到相同的 Set_Item(但不同...

回答 1 投票 0

org.apache.fop.fo.extensions.svg.SVGElement.getDimension 无法设置 svg 的基本 URL

我正在尝试在 instream-foreign-object 中实现 SVG,下面是代码片段;这是 XSLT (1.0) 的代码部分; 我正在尝试在 instream-foreign-object 内实现 SVG,下面是代码片段;这是 XSLT (1.0) 的代码部分; <xsl:template name="Draft"> <fo:block-container> <fo:block> <fo:instream-foreign-object> <svg:svg xmlns:svg="http://www.w3.org/2000/svg" xml:base="http://example.org/today/" > <svg:defs> <svg:font-face font-family="sample"> <svg:font-face-src> <svg:font-face-uri href="sample.ttf"/> </svg:font-face-src> </svg:font-face> </svg:defs> <svg:text> DRAFT </svg:text> </svg:svg> </fo:instream-foreign-object> </fo:block> </fo:block-container> </xsl:template> 现在,当我尝试从 xml 转换为 pdf 时,出现以下错误: org.apache.fop.fo.extensions.svg.SVGElement.getDimension Could not set base URL for svg java.lang.IllegalArgumentException: URI is not absolute at java.base/java.net.URL.fromURI(URL.java:721) at java.base/java.net.URI.toURL(URI.java:1139) at org.apache.fop.fo.extensions.svg.SVGElement.getDimension(SVGElement.java:77) . . . 那么您能帮我理解为什么我们会看到这个错误吗? 因为您是从命令行运行 FOP,所以您的文档有一个基本 URI。现在您已经证明您的文件系统上可以有 sample.ttf,我建议将完整路径放入 sample.ttf <svg:svg xmlns:svg="w3.org/2000/svg"> <svg:defs> <svg:font-face font-family="sample"> <svg:font-face-src> <svg:font-face-uri href="file:///PATH/for/config/sample.ttf"/> </svg:font-face-src> </svg:font-face> </svg:defs> <svg:text> DRAFT </svg:text> </svg:svg> 从 https://xmlgraphics.apache.org/fop/faq.html#svg-url 来看,FOP 似乎可以从 HTTP URL 找到字体。

回答 1 投票 0

XML 错误:此 XML 文件似乎没有任何与之关联的样式信息。文档树如下所示

任何人都可以帮助我吗?我正在尝试为我的课程学习使用 xsl 设计 xml,并且正在观看 youtube 上的视频教程。我看到并复制了他正在输入的内容,我发现它有效,但是当我运行我的...

回答 1 投票 0

XML 电子表格参考 - 从变量分配工作表名称

我正在尝试从变量分配工作表名称,这可能吗 我有的代码 progid="Excel.Sheet" 我正在尝试从变量分配工作表名称,这可能吗 我有代码 <xsl:processing-instruction name="mso-application">progid="Excel.Sheet"</xsl:processing-instruction> <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40"> <Styles> </Styles> <Worksheet ss:Name="Sheet1" > <Table> <Column ss:AutoFitWidth="0" ss:Width="60" AutoFitWidth="1"/> <Column ss:AutoFitWidth="0" ss:Width="300" AutoFitWidth="1"/> <Column ss:AutoFitWidth="0" ss:Width="80" AutoFitWidth="1"/> <xsl:call-template name="generateReportData"> <xsl:with-param name="currentElement" select="$currentElement"/> <xsl:with-param name="parentOccurrenceID" select="$parentOccurrenceID"/> </xsl:call-template> </Table> </Worksheet> </Workbook> 我已经尝试过了 <Worksheet ss:Name="Sheet1"> 到 <Worksheet ss:Name=<Data ss:Type="String">$rootProductID</Data> > ,但没有快乐 我正在使用这个参考这里 有人有什么建议吗? 谢谢 尝试: <Worksheet ss:Name="{$rootProductID<}">

回答 1 投票 0

XSLT:找到属性值“低于但最接近”我的输入值的节点

我有一个 XML,其中包含一系列具有版本属性的主题节点。版本控制是数字的。主题是链接的:我们有具有相同 ID 和不同版本的主题节点。 我想要...

回答 1 投票 0

XML/XSLT:以不同的方式设计类似的标记场景

我有两种情况,在 XML 中的 标签内使用 标签: 标签包含纯文本和偶尔的 标签(典型用途): 这是一句话... 我有两种情况,在 XML 中的 <b> 标签内使用 <p> 标签: <p>标签包含纯文本和偶尔的<b>标签(典型用途): <p>This is a sentence with a <b>bold</b> word.</p> <p>标签仅包含<b>标签: <p><b>This is a subsection title</b></p> 我可以仅在场景 2 中使用 XSLT 2.0 更改 <b> 标签的字体大小吗? 我知道我可以轻松地使用 CSS 的 outputclass 属性和样式,但长话短说,这不足以满足我的需求。 匹配 p[not(text())]/b 的模板将仅处理那些没有任何同级文本节点的 b 元素。 如果没有您尝试的更多内容,最简洁的挑战可能就是添加样式属性。因此,在这里我只会为您提供可能用于样式属性的片段以及不选择具有非空白同级节点的方法。 <xsl:attribute name="style"> <xsl:value-of select="'font-size:3em;'"/> </xsl:attribute> 至于如何选择,如果没有更多的 XML (HTML),您正尝试更新或修复未在 XSLT 中发布的内容,则不容易识别。 <xsl:template match="p/b"> <xsl:attribute name="style" select="concat('font-size: ', '3em', 'em;')"/> </xsl:template> preceding-sibling::node()[not(self::text()[normalize-space()='')][1][self::text()] 应该足以检查第一个不是空白文本节点的前同级节点是文本节点 诸如新行和缩进之类的空白是它们自己的文本节点,因此您可能需要将类似的内容添加到样式表中。 <xsl:strip-space elements="*"/>

回答 2 投票 0

XSLT-2 xsl:if 带有处理指令

嘿嘿! 我想查询处理指令中是否出现“:”,然后才执行某些操作。 在我只匹配 oxy_comment_start 之前,我想对其进行改进。 在这种情况下,它...

回答 1 投票 0

XSLT 2.0 转换:按值和元素对节点进行分组

尝试转换 xml 并按 xslt 2.0 中的值和元素对节点进行分组 我有一个输入 xml 如下: ...

回答 1 投票 0

如何将 XSL 文件包含到另一个文件中?

我使用 XSLT 版本 2.0,我想在另一个文件 home.xsl 中包含头模板 head.xsl。 主页.xsl: 我使用 XSLT 版本 2.0,我想在另一个文件中包含一个头模板 head.xsl home.xsl。 home.xsl: <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <xsl:output method="html" indent="yes"/> <xsl:template match="/"> <html> <head> <link rel="stylesheet" type="text/css" href="style.css"/> <title/> </head> <body> <div id="main"> <div id="content"> <xsl:call-template name="home-in"/> </div> </div> </body> </html> </xsl:template> </xsl:stylesheet> head.xsl: <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <xsl:output method="html" indent="yes"/> <xsl:template match="/"> <html> <head> <link rel="stylesheet" type="text/css" href="style.css"/> <title/> </head> <body> <div id="container"> <div id="header"> <div id="menu"> <ul> <li><a href="#" class="active">Home</a></li> <li><a href="#">about</a></li> </ul> </div> </div> </div> </body> </html> </xsl:template> </xsl:stylesheet> 如何将我的 head.xsl 文件包含到 home.xsl 中? 您可以使用 <xsl:include> 包含其他文件 您的home.xsl文件将如下所示 <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <xsl:output method="html" indent="yes"/> <xsl:include href="head.xsl"/> <xsl:template match="/"> <html> <head> <link rel="stylesheet" type="text/css" href="style.css"/> <title/> </head> <body> <div id="main"> <div id="content"> <xsl:call-template name="home-in"/> </div> </div> </body> </html> </xsl:template> </xsl:stylesheet> 更多详情 XSLT 处理器将简单地将指令替换为 href 属性中命名的样式表的内容。请注意,包含的样式表模板将具有与包含的样式表相同的默认优先级和导入优先级。 不要将 xsl:include 与 xsl:import 混淆,两者类似,只是导入样式表中的指令可以被导入样式表和任何包含的样式表中的指令覆盖。换句话说,导入样式表中元素的导入优先级始终低于导入样式表的导入优先级。 由于使用xsl:include与复制文件中的代码相同,因此在使用命名模板时请确保没有重复的模板名称。 这里是来自w3 documentation的粘贴 多次包含样式表可能会导致错误,因为 重复的定义。当以下情况时,这种多重包含不太明显: 它们是间接的。例如,如果样式表 B 包含样式表 A, 样式表 C 包含样式表 A,样式表 D 包含两者 样式表 B 和样式表 C,则 A 将被 D 间接包含 两次。如果 B、C 和 D 全部用作独立样式表,则 通过分离 B 中除 将 A 包含到单独的样式表 B' 中并将 B 更改为包含 只是包含 B' 和 A,与 C 类似,然后将 D 更改为 包括 A、B'、C'。 请注意,xsl:include和xsl:import元素都只允许作为顶级元素。

回答 1 投票 0

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