如何从xml节点的混合内容中提取属性值

时间:2014-06-10 16:02:31

标签: xml xslt-1.0

我想提取属性值并分配给xslt中的目标xml节点。

这是保存混合内容的节点

<oa:Expression expressionLanguage="_wcf:XPath">{_wcf.ap=IBM_External_Summary}/Order[BuyerIdentifier[(ExternalCustomerID='101234660')] 
 and BuyerIdentifier[(LogonID='anflee.jon.scott@gmail.com')] 
 and OrderStatus[(Status='M')] and StoreIdentifier[UniqueID=10051]]

有人可以告诉我如何提取uniqueid,externalcustomerid,logonid和status。

欣赏快速帮助。

此致 TJ

1 个答案:

答案 0 :(得分:1)

首先,不是 mixed content的含义。其次,你将很难提取值,因为它们不遵循一个共同的模式(一些是引用的,一些不是,一些是圆括号,一些是方形)。

以下是使用命名模板提取LogonID

的值的示例
<xsl:call-template name="extract">
    <xsl:with-param name="string" select="oa:Expression"/>
    <xsl:with-param name="label" select="'LogonID'"/>
</xsl:call-template>

...

<xsl:template name="extract">
    <xsl:param name="string"/>
    <xsl:param name="label"/>
    <xsl:param name="start">=&apos;</xsl:param>
    <xsl:param name="end">&apos;</xsl:param>
    <xsl:value-of select="substring-before(substring-after($string, concat($label, $start)), $end)" />
</xsl:template>

可以使用相同的模板提取ExternalCustomerIDStatus - 但在尝试提取{{{}时,您需要覆盖默认的startend参数1}}。