我是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,':')" />
这抓住了我想要的文本部分。
现在我的问题是,我可以在一行中完成所有这些吗?
我将添加填充,以便所有文本字段都具有一定的宽度,我想避免为每个字段创建一个变量,然后单独执行子字符串。
答案 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,':')" />
唯一不能发挥此技巧的是上下文发生变化,例如变量引用是否在谓词内。