2013-10-18 30 views
0

我是XSLT新手,所以请耐心等待。与select相同的XML元素的子串

我写了一个简单的模板,用于从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

你有没有试过将属性选择器放入'substring-after'函数中? –

回答

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,':')" /> 

你不能玩这一招,如果环境的变化,例如,如果变量引用是一个谓词中唯一的一次。

相关问题