我有一个xml数据节点:
<data field="field_value" value="["value1", "value2"]">
Evacuate - Relocate as instructed in the instruction, Prepare - Make preparations per the instruction
</data>
我想获得值属性(value1和value2)的内容,并将它们分割成这样的节点:
<fieldValue>value1</fieldValue>
<fieldValue>value2</fieldValue>
现在我正试着这样做:
<xsl:if test="data[@field='field_value']">
<xsl:call-template name="split-into-nodes">
<xsl:with-param name="string"><xsl:value-of select="data[@field='field_value']/@value"/>
</xsl:with-param>
<xsl:with-param name="node-name">fieldValue</xsl:with-param>
</xsl:call-template>
</xsl:if>
但是我得到的结果有点奇怪:
<fieldValue>["value1"</fieldValue>
<fieldValue>"value2"]</fieldValue>
请帮…提前感谢!!
您的源代码不是格式良好的XML,将无法被解析。
可能你的文件的实际内容是:
<data field="field_value" value="["value1", "value2"]">
Evacuate - Relocate as instructed in the instruction, Prepare - Make preparations per the instruction
</data>
其中是可解析的并且在打印时具有相同的外观。
如果是这种情况,您可以使用translate()
剥离"
字符和方括号[
和]
,通过将代码更改为:
<xsl:with-param name="string">
<xsl:value-of select="translate(data[@field='field_value']/@value, '"][', '')"/>
</xsl:with-param>