[英]Passing input XML to variable in XSLT with element name
我正在嘗試將輸入XML映射到變量,但是它消除了僅通過標簽值傳遞的所有標簽名稱。
輸入XML
<Response>
<FirstName>Manoj</FirstName>
<LastName>Naik</LastName>
</Response>
XSLT
<xsl:stylesheet version="3.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
exclude-result-prefixes="xsl in lang user f msxsl"
xmlns:in="http://www.composite.net/ns/transformation/input/1.0"
xmlns:lang="http://www.composite.net/ns/localization/1.0"
xmlns:f="http://www.composite.net/ns/function/1.0"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="urn:my-scripts">
<msxsl:script language="C#" implements-prefix="user">
<msxsl:assembly name="System.Data"/>
<![CDATA[
public string GetVaribaleData(string text)
{
return text;
}
]]>
</msxsl:script>
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes" />
<xsl:template match="/">
<xsl:variable name="encdata">
<xsl:copy-of select="." />
<!--<xsl:copy-of select="node()"/>-->
<!--<xsl:copy-of select="*" />-->
<!-- <xsl:copy-of select="node()|@*" /> -->
</xsl:variable>
<xsl:variable name="json" select="user:GetVaribaleData($encdata)"/>
</xsl:template>
</xsl:stylesheet>
上面的代碼在輸出變量中后,將返回\\n\\tManoj\\n\\tNaik\\n
C#函數text
存在的變量encdata
和參數中的預期信息如下-
<Response>
<FirstName>Manoj</FirstName>
<LastName>Naik</LastName>
</Response>
我想將輸入XML和元素名稱一起encdata
給XSLT中存在的encdata
。 我想在C#代碼中使用該變量對同一變量進行進一步處理。
有沒有辦法做同樣的事情?
寫注釋太長了,但是您真的需要在那里使用C#函數來將代碼綁定到特定處理器嗎? 也許您可以使用命名模板在純XSLT中實現相同的目標?
例如,嘗試以下XSLT:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:in="http://www.composite.net/ns/transformation/input/1.0"
xmlns:lang="http://www.composite.net/ns/localization/1.0"
xmlns:f="http://www.composite.net/ns/function/1.0"
exclude-result-prefixes="in lang f">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes" />
<xsl:template name="GetVariableData">
<xsl:param name="node" />
<xsl:param name="name" />
<xsl:value-of select="$node/*[local-name() = $name]" />
</xsl:template>
<xsl:template match="/">
<xsl:variable name="encdata" select="Response" />
<xsl:call-template name="GetVariableData">
<xsl:with-param name="node" select="$encdata" />
<xsl:with-param name="name" select="'LastName'" />
</xsl:call-template>
</xsl:template>
</xsl:stylesheet>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.