1
我希望刪除xml中的少數節點並添加新節點。讓我說明與下面的XML:XSL刪除特定節點並添加新添加新節點
<resprocessing>
<respcondition title="Correct" continue="No">
<conditionvar>
<varequal respident="Response_0">
<nhm_blank_name>Answer:</nhm_blank_name>
<nhm_numerator>14</nhm_numerator>
<nhm_denominator>25</nhm_denominator>
<nhm_allow_multiples>No</nhm_allow_multiples>
</varequal>
</conditionvar>
</respcondition>
</resprocessing>
我想刪除的節點<nhm_numerator>
和<nhm_denominator>
和<varequal>
下插入一個新節點(<nhm_blank_value>
),同時保留其他兩個節點<nhm_blank_name>
<nhm_allow_multiples>
新節點一個這樣的值:
<nhm_blank_value>
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mfrac>
<mn>14</mn>
<mn>25</mn>
</mfrac>
</math>
</nhm_blank_value>
我用下面的XSLT成功刪除了上述節點。但我無法添加新節點。請告訴我在哪裏,我要去錯
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:param name="mathml">
<nhm_blank_value>
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mfrac>
<mn>14</mn>
<mn>25</mn>
</mfrac>
</math>
</nhm_blank_value>
</xsl:param>
<!-- copy the xml as it is -->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<!-- deleting nodes numerator and denominator -->
<xsl:template match="questestinterop/item/resprocessing/respcondition/conditionvar/varequal/nhm_denominator" />
<xsl:template match="questestinterop/item/resprocessing/respcondition/conditionvar/varequal/nhm_numerator" />
<!-- adding mathml node -->
<xsl:template match="questestinterop/item/resprocessing/respcondition/conditionvar">
<xsl:value-of select="varequal">
<xsl:with-param name="mathml"/>
</xsl:value-of>
</xsl:template>
</xsl:stylesheet>
那真棒。但是,我可以添加通過參數值,而更換分子節點?因爲這個參數值將從java程序中填充。 – jaykumarark 2013-02-22 10:51:56
@jaykumarark你是指一個包含整個替換片段的參數,或者只是分子/分母值? – 2013-02-22 10:54:21
我的意思是包含片段的參數。該參數將從java程序接收mathml值。我想將參數值放在''node –
jaykumarark
2013-02-22 10:56:51