XML / XSLT将子节点元素放到上一级

时间:2017-02-08 19:55:33

标签: xml xslt

我一直在寻找解决方案来解决我的xml文件问题。我想用xslt编辑它。我希望将包含的元素放在上层节点中,这样它们就会处于“id”和“date”的同一级别。

<test>
- <invoice>
   <id>163-01</id>
   <date>2016-09-06</date>
   <cadreLegal>LAB</cadreLegal>
   <prestataire>907</prestataire>
   <personneProtegee>1951</personneProtegee>
   <dateEtablissement>2016-09-06</dateEtablissement>
   <heureEtablissement>13:22:00</heureEtablissement> 
 </invoice>
- <invoice>
   <id>163-01</id>
   <date>2016-09-06</date>
   <cadreLegal>LAB</cadreLegal>
   <prestataire>907</prestataire>
   <personneProtegee>1951</personneProtegee>
   <dateEtablissement>2016-09-06</dateEtablissement>
   <heureEtablissement>13:22:00</heureEtablissement>
 </invoice>
</test>

这就是我想要的。

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="node()|@*" name="order">
  <xsl:copy>
   <xsl:apply-templates select="node()|@*"/>
  </xsl:copy>
 </xsl:template>

 <xsl:template match="invoice">
  <xsl:copy-of select="/*/order"/>
  <xsl:call-template name="test"/>
 </xsl:template>

 </xsl:stylesheet>

我使用xslt尝试了几个代码但是我从来没能得到我想要的东西。我也试过了stackoverflow上的解决方案。你能帮我解决这个问题吗?

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)/wp-admin$   /wp-admin [L,NC]

提前谢谢。

Rflow

1 个答案:

答案 0 :(得分:1)

您希望按原样复制所有内容,order除外 - 您只想复制其子项,而不是自己:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

<!-- identity transform -->
<xsl:template match="@*|node()">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>

<xsl:template match="order">
    <xsl:apply-templates/>
</xsl:template>

</xsl:stylesheet>