【问题标题】:c# How to get attribute name from xsltc#如何从xslt获取属性名
【发布时间】:2019-02-22 04:26:06
【问题描述】:

我有以下字符串格式的 xslt 部分:-

<xsl:if test="TestValue3 and TestValue3 != ''">
                                                <xsl:attribute name = "TestDate" >
                                                <xsl:value-of select = "TestValue3" />
                                                </xsl:attribute>
                                                </xsl:if>

我只想从 c# 代码中获取它的属性名称。

Attribuute Name= TestDate

我怎样才能做到这一点?

【问题讨论】:

  • 你能展示你输入的样本吗?
  • 您提供的 xslt 不足以为您生成答案。所以请提供适当的或完整的 xslt 文件。

标签: c# .net xml xslt


【解决方案1】:

使用您最喜欢的 XML API 加载 XSLT 并迭代/查询有问题的项目(在这种情况下,您需要查找拥有的 xsl:if 和条件本身)。例如您可以将其加载到XmlDocumentXDocument

您可以使用XPath 来查找XmlDocuments 的元素,或者如果您使用XDocument,您可以使用LINQ

请勿尝试使用不适用于结构化数据的技术。

  • 不要使用平面字符串搜索
  • 不要使用正则表达式

实际上我正在将上面的块添加到现有的 xslt 中,但是在添加之前我需要检查属性名称 =TestDate 是否已经存在...为此我需要知道属性名称,因为属性名称可能会因块而异,,不是每次都修复

再次,使用上述建议。 XmlDocumentXDocument 都允许加载/编辑/保存。

【讨论】:

  • 实际上我将上面的块添加到现有的 xslt 中,但是在添加之前我需要检查属性名称 =TestDate 是否已经存在...为此我需要知道属性名称,因为属性名称可能会有所不同根据块,它不是每次都修复
  • @CSharper 好的,上面也可以做到这一点。不要尝试用 C# 字符串追加或其他东西做任何事情。
【解决方案2】:

如果我理解正确,这应该可以完成工作,否则请添加更多上下文。

<xsl:if test="TestValue3 and TestValue3 != ''">
  <xsl:if test="not(@TestDate)">
    <xsl:attribute name = "TestDate" >
      <xsl:value-of select = "TestValue3" />
    </xsl:attribute>
  </xsl:if>
</xsl:if>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    • 2019-07-28
    • 2013-10-08
    • 2014-10-15
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多