这些天来,我一直在越来越多地研究 XSLT,但是在过去的几个小时里,这个问题让我摸不着头脑。
我有以下 XSLT 脚本,它在服务器环境中用于接收和帮助处理 SOAP 信封的一部分。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:test="" exclude-result-prefixes="msxsl test">
<xsl:output method="xml" omit-xml-declaration="yes" indent="no"/>
<msxsl:script implements-prefix="test" language="C#">
public Param GetParam()
{
// Code here
}
</msxsl:script>
<xsl:template match="/">
<xsl:choose>
<xsl:comment>Used by IT_E items</xsl:comment>
<xsl:when test="helloworld">
<xsl:text>helloworld|clientdata|username|</xsl:text>
<xsl:value-of select="helloworld/clientdata/username"/>
<xsl:text>$helloworld|clientdata|password|</xsl:text>
<xsl:value-of select="helloworld/clientdata/password"/>
</xsl:when>
是的,只是其中的一部分。完整发布会太长太无聊。现在,如您所见,我已经准备了一个 msxsl 块,但是我不知道如何继续。
简而言之,我想要实现的是获得我当前的输出:
helloworld|clientdata|username|myvalue$helloworld|clientdata|password|myvalue
然后进一步处理,全部在 XSLT 脚本中完成。基本上我会拆分 $ 字符,然后对于数组中的每个项目,拆分 | 并填充一个结构:
Param(string cmd, string class, string var, string val);
如何返回 Param 对象(我的自定义 C# 结构)而不是纯文本?任何提示让我进入正确的方向?
另外,自定义前缀是如何工作的?我可以在声明中将 URL 留空吗?
更新:
这是我在 SOAP 信封中经过另外两个删除所有 SOAP 元素的脚本处理后仍然留下的 XML。
<helloworld>
<clientdata>
<username>test</username>
<password>test</password>
<clientdata>
我应该从一开始就包括这个,我的道歉!