我在BPEL中使用xslt将我的有效负载转换为Web服务的可接受格式,这是我使用的具有SQL命令的Web服务。现在,我的有效负载中有此元素,需要在搜索查询中使用该值。
例如:
<DocumentID>12341241123-124124-124124</DocumentID>
我想在SQL查询中使用此元素“ DocumentID”的值作为参数。在以下意义上:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0"
<!-- a whole bunch of namespaces -->
<xsl:template match="/">
<xsl:for-each select="current()[string-length(DocumentID) >= $STRING_LENGTH]/DocumentID">
<xsl:element name="SearchRequest" type="SomeRequestType">
<xsl:element name="SearchScope" type="SomeStoreScope"
objectStore="SomeObjectStore"/>
<xsl:element name="SearchSQL">SELECT [Id] FROM Document WHERE
VersionNumber ='{12341241123-124124-124124}'
AND SecondStatement = true</xsl:element>
</xsl:element>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
但是,在前面的示例中,“ VersionNumber”是硬编码的。我希望这是我的有效负载中实际的“ DocumentID”元素所覆盖的参数。
xslt中是否有任何方法可以从现有的有效负载元素中获取值,并将其用作另一个元素的值。如果将变量插入所述元素的属性中怎么办?
有什么顺序吗?
<xsl:element name="SearchSQL">SELECT [Id] FROM Document WHERE
VersionNumber ='$DocumentID'
AND SecondStatement = true</xsl:element>
</xsl:element>
在此先感谢您的帮助,请随时进行澄清!
干杯
Jesper
答案 0 :(得分:1)
在XSLT 3.0中,设置expand-text =“ yes”并输入SolutionB
。
在早期版本中,写SolutionA
还要注意,VersionNumber='{$DocumentID}'
在version =“ 2.0”之前没有VersionNumber='<xsl:value-of select="$DocumentID"/>'
属性,除非有{ {1}}声明。
答案 1 :(得分:0)
我最终以与迈克尔·凯(Michael Kay)的答案稍有不同的方式解决了这个问题,为了完整起见,我想将其包括在内:
<xsl:template match="/">
<SearchRequest type="SomeRequestType" xmlns="http://www.w3.org/2001/XMLSchema-instance">
<SearchScope type="SomeStoreScope" objectStore="SomeObjectStore"/>
<SearchSQL>
<xsl:text>SELECT [Id] FROM Document WHERE VersionNumber = </xsl:text>
<xsl:value-of select="/Stuff/MoreStuff/DocumentID"/>
<xsl:text> AND SecondStatement = true </xsl:text>
</SearchSQL>
</SearchRequest>
</xsl:template>
像这样完美地工作! 在另一种情况下,我想将变量DocumentID插入属性中,并按以下方式进行操作:
<Target>
<xsl:attribute name="objectId">
<xsl:value-of select="/Stuff/MoreStuff/DocumentID"/>
</xsl:attribute>
<xsl:attribute name="objectStore">
<xsl:text disable-output-escaping="no">SomeObjectStore</xsl:text>
</xsl:attribute>
</Target>
我希望这对某人有帮助! :)