使用XML和XSL

第一次编辑
我正在以C#格式将Child 1标记提取到DropDownList中,Plz建议使用最佳实践代码(C#)删除XML文件中的Parent标记及其所有子标记。 例:

  Something Something Something Something   Something 1 Something 1 Something 1 Something 1   

上一个问题
如何将以下样式表标记插入到使用C#代码创建的新xml文件中?

  

用于创建xml文件的C#代码: –

 new XDocument( new XElement("issues", new XElement("issue", new XElement("cat", comboBox1.Text), new XElement("desc", richTextBox1.Text), new XElement("end", dateTimePicker1.Text), new XElement("att", textBox2.Text) ) ) ).Save(path); 

首先,确保XML中的日期以规范的YYYY-MM-DD格式表示,时间表示为HH:MM:SS,以便XSLT(在1.0中,没有日期或时间数据类型)可以比较并对它们进行排序

其次,使用Steve Muench的分组技术。 您可以使用xsl:key在项目的日期生成xsl:key 。 然后可以使用key()函数查找给定日期的所有项目的列表。

使用该键,您可以构建项目中显示的不同日期的列表。 这是Muenchian技术:找到列表中key()返回该项目日期的第一项的每个项目。 此技术可确保您始终为每个不同的日期值获取一个且仅一个项目。 然后,您可以对这些项目进行排序,并使用它们的日期来推动输出的实际生产。

一个最小的例子:

                 

newsitem for

这是生成XML的后端应该处理的事情。 XSLT不是许多逻辑的最佳选择。 最好在查询新闻项后将所有内容嵌入到XML中。 只需将它们以适当的forms发送给客户,这样他们就不必那么努力了。

XSLT样式表允许在运行转换之前设置全局参数。 因此,如果您需要样式表中的当前日期,则可以使用XSLT 1.0和.NET的XslCompiledTransform定义全局参数

   

并在通过创建XsltArgumentList运行转换之前设置该值 , 将参数设置为您想要/需要的值和格式 ,然后将该XsltArgumentList作为第二个参数传递给Transform方法。 然后在样式表中,您可以将XML输入元素或属性中的日期与参数进行比较。

当您使用.NET时,另一种选择是使用XSLT 2.0; 微软不支持这一点,但对于Saxon 9,有一个第三方解决方案。 XSLT / XPath 2.0有一个名为current-date的函数,这样你就不需要参数了。

如果您使用PHP的XSLT处理器,则可以在XSLT脚本中使用PHP函数。 您只需要在转换之前调用registerPhpFunctions。 正确顺序的结果值可用于排序。