如何从xslt获取属性名称

时间:2019-02-22 04:26:06

标签: c# .net xml xslt

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

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

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

Attribuute Name= TestDate

我该如何实现?

2 个答案:

答案 0 :(得分:2)

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

您可以使用XPath查找XmlDocument的元素,如果使用XDocument,则可以使用 LINQ

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

  • 请勿使用平字符串搜索
  • 请勿使用 regex
  

实际上我是将上述代码块添加到现有的xslt中,但是在添加之前,我需要检查属性名称= TestDate是否已经存在...为此,我需要知道属性名称,因为属性名称可以随每个块而变化,并非每次都可以解决

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

答案 1 :(得分:1)

如果我正确理解您的意见,则应该这样做,否则请添加更多上下文。

<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>