当属性具有'@'时如何在 XSL 中获取值
Posted
技术标签:
【中文标题】当属性具有\'@\'时如何在 XSL 中获取值【英文标题】:How to get value in XSL when attributes have '@'当属性具有'@'时如何在 XSL 中获取值 【发布时间】:2020-10-13 04:24:12 【问题描述】:如何在下面的XSL文件中获取'maa'
类型的<xsl>
元素的值?
<xsl:stylesheet version="3.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:eu="http://europa.eu.int" xmlns:xlink="http://www.w3c.org/1999/xlink">
<xsl:template mode="agency">
<xsl:choose>
<xsl:when test="@code='AT-BASG'">Austria - BASG- Austrian Federal Office for Safety in Health Care / Austrian Medicines and Medical Devices Agency</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template mode="submission">
<xsl:choose>
<xsl:when test="@type='maa'">Marketing Authorisation</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
我尝试如下:
string emp = "@type='maa'";
XmlDocument xslDoc = new XmlDocument();
xslDoc.Load(IndexFTPLocation);
//ReadXElement(indexXele, sequenceName, ApplicationName, IndexFTPLocation, 1);
XmlNamespaceManager nsMgr = new XmlNamespaceManager(xslDoc.NameTable);
nsMgr.AddNamespace("xsl", "http://www.w3.org/1999/XSL/Transform");
XmlNode usrNode = xslDoc.SelectSingleNode("/xsl:stylesheet/xsl:template[@mode='submission']/xsl:choose/xsl:when[@test='@type='maa'']", nsMgr);
但是,当 type="maa" 时,我无法获得“营销授权”。你能帮我解决这个问题吗?
提前致谢!!
编辑: 出现错误:'/xsl:stylesheet/xsl:template[@mode='submission']/xsl:choose/xsl:when[@test='@type='maa'']' 的令牌无效。
【问题讨论】:
请显示minimal reproducible example,包括输入和预期结果。 【参考方案1】:您可以在xsl:when[@test='@type='maa'']
中使用"
代替'
,如以下代码:
XmlDocument xslDoc = new XmlDocument();
xslDoc.Load(IndexFTPLocation);
XmlNamespaceManager nsMgr = new XmlNamespaceManager(xslDoc.NameTable);
nsMgr.AddNamespace("xsl", "http://www.w3.org/1999/XSL/Transform");
XmlNode usrNode = xslDoc.SelectSingleNode("/xsl:stylesheet/xsl:template[@mode='submission']/xsl:choose/xsl:when[@test=\"@type='maa'\"]", nsMgr);
string text = usrNode?.InnerText;
演示
Console.WriteLine(text);
结果
Marketing Authorisation
希望对您有所帮助。
【讨论】:
以上是关于当属性具有'@'时如何在 XSL 中获取值的主要内容,如果未能解决你的问题,请参考以下文章
如果祖先的属性使用 xsl 持有某个值,我如何删除属性和元素
当输入 XML 和转换 XSL 是字符串时,如何使用 XslCompiledTransform。如何将转换结果作为字符串获取?