我有一个XML结构,我想用XSLT转换它。然而,使其尽可能动态化是很重要的。我相信制作一个feed的副本是可能的,然后只需选择一个特定的部分并对其进行转换。当一个新节点添加到原始XML中时,不需要在XSLT中进行任何更改,就可以将这个新节点包含在XSLT的输出中。
原始XML示例:
<?xml version="1.0" encoding="UTF-8"?>
<catalog week_id="629" generated_at="15.11.2017 23:53" version="2">
<item>
<lot>
<id>2982641</id>
<title_local><![CDATA[Title]]></title_local>
<sub_title_local>Subtitle</sub_title_local>
<promo>false</promo>
</lot>
<lot_specifics>
<case_material>
<name_local>Materiaal kast</name_local>
<name_en>Case material</name_en>
<slug>s-10-materiaal-kast</slug>
<option>
<value_local>Verguld</value_local>
<value_en>Gold-plated</value_en>
<slug_value>1750-verguld</slug_value>
</option>
<option>
<value_local>Zilver</value_local>
<value_en>Silver</value_en>
<slug_value>1751-silver</slug_value>
</option>
</case_material>
</lot_specifics>
<associations>
<category_id>1</category_id>
<auction_id>2</auction_id>
</associations>
</item>
</catalog>
<?xml version="1.0" encoding="UTF-8"?>
<catalog week_id="629" generated_at="15.11.2017 23:53" version="2">
<item>
<lot>
<id>2982641</id>
<title_local><![CDATA[Title]]></title_local>
<sub_title_local>Subtitle</sub_title_local>
<promo>false</promo>
</lot>
<lot_specifics>
<case_material>
<name_local>Materiaal kast</name_local>
<name_en>Case material</name_en>
<slug>s-10-materiaal-kast</slug>
<value_local>Verguld,Silver</value_local>
<value_en>Gold-plated,Silver</value_en>
</case_material>
</lot_specifics>
<associations>
<category_id>1</category_id>
<auction_id>2</auction_id>
</associations>
</item>
</catalog>
由于您没有指定XSLT版本,所以我使用了功能更强大、更适合这样的任务的2.0。
脚本应包含:
case_material
元素的模板。<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:template match="case_material">
<xsl:copy>
<xsl:apply-templates select="*[name() != 'option']|@*"/>
<xsl:for-each-group select="option/*" group-by="name()">
<xsl:if test="current-grouping-key() != 'slug_value'">
<xsl:element name="{current-grouping-key()}">
<xsl:value-of select="current-group()" separator=","/>
</xsl:element>
</xsl:if>
</xsl:for-each-group>
</xsl:copy>
</xsl:template>
<xsl:template match="node()|@*">
<xsl:copy><xsl:apply-templates select="node()|@*"/></xsl:copy>
</xsl:template>
</xsl:stylesheet>
在XSLT1.0中编写这样的脚本是可能的,但是您必须编写更多的代码,因为版本1.0不支持分组。
不具有任何3个属性值(TargetInteresting1、TargetInteresting2、TargetInteresting3)的节点应不加修改地复制到最终结果中。 我正在寻找一个使用XSLT2.0的解决方案。我不知道从何说起,我还不太习惯xslt:-(
我试图将一些JSON对象映射到java对象,然后将这些对象保存到我的neo4j DB中。 我想知道是否有使用neo4j-ogm的解决方案,或者我需要添加Spring Data Neo4J(SDN)来解决这个问题?
作为前言,我意识到还有其他关于逗号分隔数字的正则表达式的主题,但当我试图使用这些解决方案时,它们都不起作用。
假设我们有一个具有10个GPU和40个CPU核的单个节点。这是否可以用来将节点拆分成10个节点,每个节点有4个核心,每个GPU,并带有显式的CPU/GPU绑定?如果是,配置需要是什么样子的?
问题内容: 我有一个简单的查询: 结果如下: 我想在一行中返回结果,所以像这样: 当然,我可以编写一个PL / SQL函数来完成这项工作(我已经在Oracle10g中做到了),但是对于此任务是否有更好的,最好是非Oracle特定的解决方案(或者可能是内置函数) ? 我通常会用它来避免子查询中出现多行,因此,如果一个人有一个以上的公民身份,我不希望他/他在列表中重复。 更新 :我的函数看起来像这样:
问题内容: 例如 根= NodeToInsert可能是 输出应为: 问题答案: 如果事实证明我只是为您做功课,我会感到非常恼火。 结果将是: