新手在这里。我有一个XML文件填充了这样的数据:
Router::redirect('/news/news/:slug',
array(
'controller' => 'articles',
'action' => 'view',
'category' => 'news'
),
array(
'status' => '301'
)
);
Router::connect('/news/:slug',
array(
'controller' => 'articles',
'action' => 'view',
'category' => 'news'
)
);
我想添加这个元素:
<marker>
<name>CIP-67</name>
<address>Husterhohe</address>
<country>DE</country>
</marker>
在name元素上方,如下所示:
<id>9999</id>
我的XSL文件是:
<marker>
<id>9999</id>
<name>CIP-67</name>
<address>Husterhohe</address>
<country>DE</country>
</marker>
当然,这会将新元素放在name元素下面。如何将其放在名称元素上方?
答案 0 :(得分:0)
在这种情况下,您应该主要考虑插入主要是插入的父级,而不是它的兄弟。试试这个(其中包括一些精简的改动):
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output indent="yes"/>
<!-- Identity transform -->
<xsl:template match="node()">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="marker">
<xsl:copy>
<xsl:copy-of select="@*"/>
<id>9999</id>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:0)
在XSLT 1.0中执行此操作的另一种简单方法
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output indent="yes"/>
<xsl:template match="/">
<marker>
<id>9999</id>
<xsl:apply-templates select="marker/*"/>
</marker>
</xsl:template>
<xsl:template match="marker/*">
<xsl:copy-of select="."/>
</xsl:template>
</xsl:stylesheet>
&#13;