【问题标题】:create XML file with variables for drop down box为下拉框创建带有变量的 XML 文件
【发布时间】:2021-10-22 10:22:44
【问题描述】:

我创建了一个 XML 文件,并且可以成功地使用该信息来创建一个下拉列表。我想要实现的是从 stringResource 文件中添加变量以创建下拉列表的值。

我的原始 XML 文件是:

<root>
<row>
  <var name="--Select--"/>
</row>
<row>
  <var name="Agriculture"/>
</row>
<row>
  <var name="Airline"/>
</row>
<root>

在尝试添加变量时,我尝试了以下方法:

<PackageTransform>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:aspdnsf="urn:aspdnsf" exclude-result-prefixes="aspdnsf">
    <xsl:output method="html" omit-xml-declaration="yes" />

    <xsl:template match="row">

    <xsl:param name="pReplacement" select="'Something Different'"/>
        
        <root>
            <row>
                <xsl:value-of select="aspdnsf:StringResource('industry.cs.1')"/>
            </row>
            <row>
                Air
            </row>
            <row>
                <xsl:value-of select="$pReplacement" />
            </row>
        </root>
        
    </xsl:template>

</xsl:stylesheet>

我的工作代码,原始 XML 文件是:

            XmlNodeList industrylist = XmlDoc.GetElementsByTagName("row");
        foreach (XmlNode Node in industrylist)
        {
            string industry = Node["var"].Attributes["name"].Value;
            _cboIndustryType.Items.Add(new ListItem(industry));
        }

使用顶部 XML 文件,我的下拉列表正确列出了所有名称:

  1. --选择--
  2. 农业
  3. 航空公司

我无法将属性名称设置为变量,因此我更改了代码以查找节点 innerXML,如下所示:

                XmlNodeList industrylist = XmlDoc.GetElementsByTagName("row");
        foreach (XmlNode Node in industrylist)
        {
            string industry = Node.InnerXml;
            _cboIndustryType.Items.Add(new ListItem(industry));
        }

但经过多次尝试(例如第二个 XML 文件)后,我无法让变量正确显示。我看到以下列表:

  1. 李>
  2. 空气

如果有人能告诉我我在这里做错了什么,我将不胜感激。

提前致谢!

【问题讨论】:

  • 可能你在一个步骤中尝试了太多。将下拉框的 XML 文件的使用与通过 XSLT 生成 XML 分开。问题出在哪方面?

标签: xml xslt


【解决方案1】:

我想出了一个方法来做我想做的事。

我刚刚编写了 2 个不同的 XML 文件,每种语言一个,然后更改了代码以根据语言环境选择合适的文件。

            if (Customer.Current.LocaleSetting.Contains("es"))
            XmlDoc.Load(CommonLogic.SafeMapPath("~/XmlPackages") + "\\industry.drop.down.list.es-MX.xml.config");
        else
            XmlDoc.Load(CommonLogic.SafeMapPath("~/XmlPackages") + "\\industry.drop.down.list.xml.config");

        XmlNodeList industrylist = XmlDoc.GetElementsByTagName("row");
        foreach (XmlNode Node in industrylist)
        {
            string industry = Node.InnerXml;
            _cboIndustryType.Items.Add(new ListItem(industry));
        }

谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    相关资源
    最近更新 更多