XML元素的子串与select在同一行

时间:2013-10-18 19:52:17

标签: xml xslt substring padding

我是XSLT的新手,所以请耐心等待。

我编写了一个简单的模板,用于从XML文件中获取值并以简单的文本格式显示它们。

我这行有效:

"Supplier Invoice Payments Descriptor: <xsl:value-of select="wd:Supplier_Invoice_Payments/wd:Supplier_Invoice_Payments/@wd:Descriptor"/>"

描述符是这样的属性: <Suppplier_Invoice_Payments Descriptor="blahblahblah">

我想使用变量获取blahblahblah文本部分,如下所示:

<xsl:variable name="suppInvoiceDesc" select="wd:Supplier_Invoice_Payments/wd:Supplier_Invoice_Payments/@wd:Descriptor" />
<xsl:value-of select="substring-after($suppInvoiceDesc,':')" />

这抓住了我想要的文本部分。

现在我的问题是,我可以在一行中完成所有这些吗?

我将添加填充,以便所有文本字段都具有一定的宽度,我想避免为每个字段创建一个变量,然后单独执行子字符串。

1 个答案:

答案 0 :(得分:1)

当然,只需使用用于计算变量的表达式替换变量引用,必要时使用括号。所以

<xsl:variable name="suppInvoiceDesc" select="wd:Supplier_Invoice_Payments/wd:Supplier_Invoice_Payments/@wd:Descriptor" />
<xsl:value-of select="substring-after($suppInvoiceDesc,':')" />

变为

<xsl:value-of select="substring-after(wd:Supplier_Invoice_Payments/wd:Supplier_Invoice_Payments/@wd:Descriptor,':')" />

唯一不能发挥此技巧的是上下文发生变化,例如变量引用是否在谓词内。