XSLT 1.0 - 表达式中出现意外标记“{”。 -->{<-- 名称(.)}
XSLT 1.0 - Unexpected token '{' in the expression. -->{<-- name(.)}
给定如下所示的输入文件,第一个代码示例有效,第二个代码示例失败并出现错误:
Unexpected token '{' in the expression. -->{<-- name(.)}
主要区别在于我是将 {name(.)}
放在名称属性中还是放在 select 属性中。我需要像第二个代码一样生成数据以匹配我的 OAGIS ProcessShipment 架构。
<xsl:for-each select="//s0:B2">
<xsl:for-each select="./*">
<xsl:if test=".">
<xsl:element name="{name(.)}" >
<xsl:value-of select="." />
</xsl:element>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
失败的代码:
<xsl:for-each select="//s0:B2">
<xsl:for-each select="./*">
<xsl:if test=".">
<xsl:element name="ID" xmlns="http://www.openapplications.org/oagis/10">
<xsl:attribute name="typeCode">
<xsl:value-of select="{name(.)}" />
</xsl:attribute>
<xsl:value-of select="." />
</xsl:element>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
期望的输出:
<ID typeCode="B202>ABCD</ID>
<ID typeCode="B204>0080082626</ID>
<ID typeCode="B206>PP</ID>
输入数据:
<ns0:X12_00401_204 xmlns:ns0="http://example.com/X12/204">
<ST>
<ST01>204</ST01>
<ST02>0001</ST02>
</ST>
<ns0:B2>
<B202>ABCD</B202>
<B204>0080082626</B204>
<B206>PP</B206>
</ns0:B2>
</ns0:X12>
参考:How to select each child node of a parent in a for-each xslt statement?
通过反复试验,我得到了这个工作:
<xsl:value-of select="name(.)" />
刚刚删除了花括号,它告诉它 运行 大括号内的内容与 xpath 一样。我仍然有点不清楚为什么在 name= 中需要它。
给定如下所示的输入文件,第一个代码示例有效,第二个代码示例失败并出现错误:
Unexpected token '{' in the expression. -->{<-- name(.)}
主要区别在于我是将 {name(.)}
放在名称属性中还是放在 select 属性中。我需要像第二个代码一样生成数据以匹配我的 OAGIS ProcessShipment 架构。
<xsl:for-each select="//s0:B2">
<xsl:for-each select="./*">
<xsl:if test=".">
<xsl:element name="{name(.)}" >
<xsl:value-of select="." />
</xsl:element>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
失败的代码:
<xsl:for-each select="//s0:B2">
<xsl:for-each select="./*">
<xsl:if test=".">
<xsl:element name="ID" xmlns="http://www.openapplications.org/oagis/10">
<xsl:attribute name="typeCode">
<xsl:value-of select="{name(.)}" />
</xsl:attribute>
<xsl:value-of select="." />
</xsl:element>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
期望的输出:
<ID typeCode="B202>ABCD</ID>
<ID typeCode="B204>0080082626</ID>
<ID typeCode="B206>PP</ID>
输入数据:
<ns0:X12_00401_204 xmlns:ns0="http://example.com/X12/204">
<ST>
<ST01>204</ST01>
<ST02>0001</ST02>
</ST>
<ns0:B2>
<B202>ABCD</B202>
<B204>0080082626</B204>
<B206>PP</B206>
</ns0:B2>
</ns0:X12>
参考:How to select each child node of a parent in a for-each xslt statement?
通过反复试验,我得到了这个工作:
<xsl:value-of select="name(.)" />
刚刚删除了花括号,它告诉它 运行 大括号内的内容与 xpath 一样。我仍然有点不清楚为什么在 name= 中需要它。