xslt 相关问题

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

JavaScript 中 XSLTProcessor.transformToFragment 的空结果

我在 JavaScript 中使用 XSLT 转换 XML 数据时遇到问题。我的设置涉及获取 XML 数据和 XSLT 样式表,该样式表嵌入在我的 HTML 中的标签内。当我尝试

回答 1 投票 0

Powershell $xslt.Transform() 以及在 xslt 中使用 Document() 函数的问题

我制作了一个 xslt 脚本,将 XML Peppol/UBL 发票转换为可以导入到我们的 ERP 系统中的 xml 格式。该脚本使用以下命令在 Powershell 中完美运行: $xsl='...

回答 1 投票 0

XSLT 使用带有 for-each 选择的变量

我对 XML 和 XSLT 非常陌生,刚刚开始一份工作,我的一个项目需要我使用它。我正在尝试使用动态变量(稍后该变量将不会被硬编码)来获取属性...

回答 3 投票 0

如何将 XSL FO 转换为 XSLT 模板

使用transformToFragment,通过传递XSLT和XML文档,我能够实现PDF 对于另一个请求,我有 XSL FO。我们可以使用XSL FO和XML文档来生成pdf吗? 请指教 你...

回答 1 投票 0

XML 转换为特定 XML 模式

我们有一个特定的要求,将XML报告输出转换为特定的格式。 下面是需要转换为所需输出格式的 XML。所有员工 ID 均应取消...

回答 1 投票 0

如何使用 XSLT 3 中的 xpath() 将元素推送到 XML 中?

我有很大的 XML 文件,需要向其中注入处理指令。处理指令的位置被列为 xpath 位置。我创建了一个小型版本的 XML 文件...

回答 1 投票 0

在多个子节点中过滤

是否可以同时在多个子节点中进行过滤? 根据下面的示例,我希望 xslt 检查“蓝色属性”值是否不存在。 我的 XML: <...

回答 1 投票 0

需要一个函数来使用xslt获取LV记录上的LP记录值

我需要在字段:LV_Reason 中获取 LV 记录上 RecordType: LP 的 LP_Leave_Reason 值。如果每个 Emp 有两个以上 LP 记录,则需要获取 LP 记录的第一个 LP_Leave_Reason。 对于每一个 LV 记录...

回答 1 投票 0

使用XSLT将XML转换为Excel文件

在我刚接触 XSLT 之前,有人要求我将 XML 文件转换为 Excel 文件。 经过几个小时的使用 xslt 我想出了这个。 这是我的样本...

回答 2 投票 0

转置 xml 交易数据在 xslt2 中显示为 html 表格

得到以下 xml 数据,它在非常简单的级别上“模拟”一些银行账户交易(仅提款): 1...

回答 1 投票 0

如果属性与值不匹配,XSLT 删除节点

13.218.400.000.000.000t> 循环充电...

回答 1 投票 0

使用 xsl:number

考虑以下 XML 文档: ...

回答 1 投票 0

XSLT 2.0 - 如何将平面 XML 结构转换为嵌套/分层 XML 结构

我想使用 XSLT 2.0 将以下平面 XML 结构转换为嵌套/分层 XML 结构。 <

回答 1 投票 0

如何使用 XSLT 合并两个 xml 文件

我有两个 xml 文件需要使用 XSLT 将其合并为一个。 第一个 XML 是(原始 XML): f ...

回答 2 投票 0

如何在 JHipster React 应用程序中渲染一堆 XML 文件

我有一堆 XML 文件(大约 100 个文件),我需要使用正确的导航和样式在 React 应用程序中渲染它们。 这些 XML 可以锚定到不同的 XML 文件以进行导航...

回答 1 投票 0

javax.xml.transform.Source 的字符串操作

我正在使用 Java 和 XSL 样式表从 XML 文件中检索值并将其输出到文本文件。 下面是使用的程序: TransformerFactory 工厂 = TransformerFactory.newInsta...

回答 2 投票 0

Windows 上的 xsltproc:I/O 错误:如果参数是绝对路径,则参数无效

我按照本指南在 Windows 上使用 xsltproc 当我使用相对路径运行 xsltproc 时,即: xsltproc -o "..\output.html" "c: emplates\out.xsl" "c:\data\input.xml" 一切都好。 但是当...

回答 3 投票 0

如何使用 Saxon XSLT 处理 SVG 文件目录

我正在尝试使用 XSL-T 处理充满 SVG 文件的目录。我目前已经尝试过: 我正在尝试使用 XSL-T 处理充满 SVG 文件的目录。我目前已经尝试过: <?xml version="1.0"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" doctype-public="-//W3C//DTD SVG 1.1//EN http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"/> <xsl:strip-space elements="*"/> <xsl:template name="main"> <svg xmlns="http://www.w3.org/2000/svg"> <defs/> <xsl:apply-templates select="collection(concat(resolve-uri('src/images'),'?select=*.svg;content-type=application/xml'))"/> </svg> </xsl:template> <xsl:template match="/"> <xsl:message>root</xsl:message> <xsl:apply-templates select="svg"/> </xsl:template> <xsl:template match="svg"> <xsl:message>svg</xsl:message> <xsl:attribute name="id"><xsl:value-of select="document-uri(/)"/></xsl:attribute> <xsl:attribute name="viewBox"><xsl:value-of select="@viewBox"/></xsl:attribute> <xsl:apply-templates select="path"/> </xsl:template> <xsl:template match="path"> <xsl:message>path</xsl:message> <xsl:attribute name="d"><xsl:value-of select="@d"/></xsl:attribute> <xsl:apply-templates select="@*"/> </xsl:template> <xsl:template match="@fill"> <xsl:message>@fill</xsl:message> <xsl:attribute name="fill"><xsl:value-of select="."/></xsl:attribute> </xsl:template> </xsl:stylesheet> 从命令行使用它: java net.sf.saxon.Transform -it:main -xsl:"%XSL%\svg-sprite.xsl" -o:"%OUT%\sprite.svg" 但是,当我在包含 29 个 SVG 文件的目录上运行它时,我得到的只是打印出 29 个 root。由于某种原因,<xsl:apply-templates select="svg"/> 似乎不起作用。 有谁知道如何解决这个困境,或者至少知道如何弄清楚为什么它没有应用定义的svg模板? 在 XSLT 的根元素上添加 xpath-default-namespace="http://www.w3.org/1999/svg"。基本上是 SVG 命名空间,我希望我已经记住并输入了正确的内容。

回答 1 投票 0

如何在xslt中使用具有两个匹配条件的键?

我正在尝试匹配具有相似 ID 且具有其他两个不同属性的对象。 我的 XML 文件具有以下结构: 我正在尝试匹配具有相似 ID 且具有其他两个不同属性的对象。 我的 XML 文件具有以下结构: <array> <object> <property name="AttributeValue"> <literal type="string">1</literal> </property> <property name="AttributeName"> <literal type="string">Is_Active</literal> </property> <property name="RecordId"> <literal type="string">1</literal> </property> </object> <object> <property name="AttributeValue"> <literal type="string">Retail</literal> </property> <property name="AttributeName"> <literal type="string">Label</literal> </property> <property name="RecordId"> <literal type="string">1</literal> </property> </object> <object> <property name="AttributeValue"> <literal type="string">1</literal> </property> <property name="AttributeName"> <literal type="string">MBRSH</literal> </property> <property name="RecordId"> <literal type="string">1</literal> </property> </object> ... </array> 我正在尝试匹配具有相同 RecordId 的所有对象 <xsl:key name="value" match="array/object/property[@name='RecordId']/literal[text()] | array/object/property[@name='AttributeName']/literal[text()]" use="array/object/property[@name='AttributeValue']/literal[text()]" /> <xsl:template match="array"> <xsl:variable name="RecordId" select="./object/property[@name='RecordId']/literal[text()]"/> <xsl:for-each select="$RecordId"> <xsl:variable name="MBRSH" select="key('value', current() | 'MBRSH')" /> .... </xsl:for-each> </xsl:template> 我只是想找到一个有效的组合!请向我提供您的见解。 您可以使用 XPath 查找具有相同 RecordId 的所有对象。实现此目的的 XPath 表达式为: /array/object[property[@name='RecordId']/literal[@type='string' and text()='1']]

回答 1 投票 0

更新属性值

给定这样的输入 给定这样的输入 <div> <p> <x n="1"/> <x n=""/> <x n=""/> <x n=""/> <x n="190"/> <x n=""/> <x n=""/> </p> </div> 我需要从现有值增量更新属性 n 的空值才能实现此结果: <div> <p> <x n="1"/> <x n="2"/> <x n="3"/> <x n="4"/> <x n="190"/> <x n="191"/> <x n="192"/> </p> </div> 我尝试过这个解决方案: <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:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:template match="@* | node()"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> </xsl:copy> </xsl:template> <xsl:template match="x[@n = '']/@n"> <xsl:attribute name="n" select="preceding::x[number(@n)]/@n + 1"/> </xsl:template> </xsl:stylesheet> -- 只产生: <div> <p> <x n="1"/> <x n="2"/> <x n=""/> <x n=""/> <x n="190"/> <x n=""/> <x n=""/> </p> </div> 使用 XSLT 3 和 xsl:iterate: <xsl:mode on-no-match="shallow-copy"/> <xsl:template match="p"> <xsl:copy> <xsl:iterate select="x"> <xsl:param name="n" select="()"/> <xsl:variable name="n" select="if (@n and @n != '') then @n else $n + 1"/> <xsl:copy> <xsl:attribute name="n" select="$n"/> </xsl:copy> <xsl:next-iteration> <xsl:with-param name="n" select="$n"/> </xsl:next-iteration> </xsl:iterate> </xsl:copy> </xsl:template> 在线示例.

回答 1 投票 0

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