以下是XML输入、想要的输出、我拥有的代码和我得到的错误结果的最小但完整的示例。
这是我的输入XML
<?xml version="1.0"?>
<R>
<M>
<H>1</H>
<B>
<p Ccy="GBP">1</p>
</B>
</M>
<M>
<H>1</H>
<B>
<p Ccy="GBP">2</p>
</B>
</M>
<M>
<H>1</H>
<B>
<p Ccy="GBP">3</p>
</B>
</M>
<M>
<H>1</H>
<B>
<p Ccy="GBP">4</p>
</B>
</M>
</R>
这是我当前的XSLT
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">
<xsl:output indent="yes" />
<xsl:template match="/*">
<R>
<M>
<xsl:apply-templates select="M[1]/H | M/B" />
</M>
</R>
</xsl:template>
<xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
这是我目前的输出
如果您查看输出,输出中缺少Ccy="GBP"。请查看预期输出。
<?xml version="1.0" encoding="UTF-8"?>
<R xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">
<M>
<H>1</H>
<B>
<p>1</p>
</B>
<B>
<p>2</p>
</B>
<B>
<p>3</p>
</B>
<B>
<p>4</p>
</B>
</M>
</R>
预期产出
<?xml version="1.0" encoding="UTF-8"?>
<R xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">
<M>
<H>1</H>
<B>
<p Ccy="GBP">1</p>
</B>
<B>
<p Ccy="GBP">2</p>
</B>
<B>
<p Ccy="GBP">3</p>
</B>
<B>
<p Ccy="GBP">4</p>
</B>
</M>
</R>
小提琴:https://xsltfiddle.liberty-development.net/ej9EGbG/31
<xsl:template match="/*">
<R>
<M>
<xsl:apply-templates select="M[1]/H | M/B" />
</M>
</R>
</xsl:template>
<xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:if test="@Ccy">
<xsl:attribute name="Ccy">
<xsl:value-of select="@Ccy"/>
</xsl:attribute>
</xsl:if>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
Simply add attribute @Ccy.
如果您想复制所有属性,只需扩展应用程序模板来处理它们并设置一个复制它们的模板:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">
<xsl:output indent="yes" />
<xsl:template match="/*">
<R>
<M>
<xsl:apply-templates select="M[1]/H | M/B" />
</M>
</R>
</xsl:template>
<xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="@* | node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="@*">
<xsl:copy/>
</xsl:template>
</xsl:stylesheet>
https://xsltfiddle.liberty-development.net/ej9EGbG/34
我有一个neo4j数据库,里面有一些数据。大多数节点都有一个属性,但不是所有节点都有;我想构造一个Cypher查询来匹配并返回所有不匹配的查询。 我已经尝试了以下所有方法,但它们都给出了0个结果: 但是,我至少有一个节点没有指定属性,我可以通过 检查结果视图中的节点,或者注意到 返回。 如何匹配没有属性的所有节点?
我有一个修改密码查询的性能问题。给定是一个源节点,它与子节点有大量的传出关系。这些子节点都有一个键属性。现在的目标是在原点和子节点之间创建新节点,以便将共享相同密钥属性值的所有子节点分组。这个想法的情节可以在neo4j控制台上找到:http://console.neo4j.org/?id=vinntj 我将查询与sping-data-neo4j 2.2.2一起使用。RELEASE和neo4j 1.
我有一个XML: 我想向根元素:/doc添加一个属性(名称空间),以便输出如下所示: 我尝试了三种xslt(跳过了默认的“复制所有”部分以减少问题的长度)。 xslt1:见下文,问题在于将空名称空间xmlns=”“添加到/doc的所有子节点(即:/doc/tag1和/doc/tag2) Xslt2:见下文,问题是“ns”被添加到根节点:和 xslt3:请参见下文,问题是报告了错误:未定义名称空间前
我想递归地连接一个节点的参数值和它的父节点的相同参数值。 例如,如下: 应该成为 我试过了 有什么问题吗?
我有一个maven项目,我想导出到runnable中。jar文件。 在VSCode中,项目可以正常工作。导出的项目包括。jar文件和包含所有javaFX文件的libs文件夹: 运行以下命令时出现问题: 我不明白为什么会出现这个错误,因为所有JavaFX文件都位于libs文件夹中并且可见。 我目前使用SDKman的Java Temurin 18.0.1。 <代码>Pom。xml文件: 我尝试下载Ja
我第一次尝试使用JavaFX。我在IntelliJ中创建了一个*.fxml文件的项目。然后,我在IntelliJ中打开了内置的fxml gui编辑器。我得到一个警告,我需要为JavaFX添加一个SDK。我转到了项目结构设置、模块、依赖项,并添加了“IntelliJ dir\jre64\lib\ext\jfxrt.jar”。警告消失了。模块作用域设置为编译。如果我试图通过单击IntelliJ中类声明