如何让xsl只返回连字符右侧的一部分字段?

时间:2012-12-14 05:31:08

标签: xslt-1.0

我正在使用shipworks中的xsl模板。我能够创建这个简单的代码来创建一个我可以使用的文本文件“选择列表”。


<!DOCTYPE xsl:stylesheet [ <!ENTITY nl "&#xd;&#xa;"> ]>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"             xmlns:sw="http://www.interapptive.com/shipworks" extension-element-prefixes="sw">
<xsl:import href="ShipWorks2\System\Common" />

<xsl:output method="text" encoding="utf-8" />

<!-- -->
<!-- Start of processing -->
<!-- -->

<xsl:template match="/">
<xsl:for-each select="//Order/Item">
<xsl:sort order="descending" select="../Total" data-type="number" />
<xsl:sort order="descending" select="../Number" data-type="number" />
<xsl:value-of select="SKU" />,<xsl:value-of select="Quantity" /><xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>

是的,我知道,真的很棒啊!?嘿,这让我永远走向正确!如您所见,它正在制作SKU列表。好吧,我的每个SKU都看起来像这样:

夸夸其谈-PRODUCTSKU

我想知道是否有办法从这个值中获取'PRODUCTSKU',并在最后一个字符之前切断所有内容。

在网上浏览时,我看到了post-after-last函数。我想知道我是否可以使用它?我试着把它放在那里,但我想我遗漏了关于声明或其他什么的东西。

1 个答案:

答案 0 :(得分:0)

取代

<xsl:value-of select="SKU" />

替换以下代码。它应该工作,

<xsl:variable name="input">
        <xsl:value-of select="SKU" />
</xsl:variable>
<xsl:value-of select="replace($input,'^(.)+?(PRODUCTSKU)$','$2')"/>