c# – XSL问题XSL选择特定的字段名称
发布时间:2020-12-15 17:18:12 所属栏目:百科 来源:网络整理
导读:我想知道是否有人可以帮助我或指出我正确的方向.我现在有 从 XML文件返回正确的元素有些麻烦.我只是尝试获取我所拥有的大型XML文件的缩减版本,以便输出另一个XML文件(而不是很多教程所使用的HTML). 我有XML字段,如: Field name="audio_format" value="" / F
我想知道是否有人可以帮助我或指出我正确的方向.我现在有
从 XML文件返回正确的元素有些麻烦.我只是尝试获取我所拥有的大型XML文件的缩减版本,以便输出另一个XML文件(而不是很多教程所使用的HTML). 我有XML字段,如: <Field name="audio_format" value="" /> <Field name="camera" value="" /> 但是我要在这里列出更多元素,我有一个可以想象包含在视频或音频文件中的所有可想象的元数据. 所以我的问题和问题是如何在我的XSL中指定要抓取哪些字段名称,它目前正在抓取标签内的所有内容,这很好但是不对.这就像我的XSL一样. <!--MasterClip--> <xsl:template match="MasterClip"> <MasterClip> <xsl:apply-templates /> </MasterClip> </xsl:template> <xsl:template match="Field"> <Field> <xsl:attribute name="name"> <xsl:value-of select="@name" /> </xsl:attribute> <xsl:attribute name="value"> <xsl:value-of select="@value" /> </xsl:attribute> </Field> 我有大约50个字段然后输出,但我只想选择我指定的字段(其中10个).我尝试了一些例子,但大多数都与搜索和排序有关,任何帮助都会很棒.即使只是一个简单的例子,告诉我如何选择其中一个,我可以把它复制出来用于其余的! 谢谢 解决方法
这可以通过枚举要复制的字段名称的变量来完成:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" encoding="utf-8" indent="no" /> <xsl:variable name="fields" select="'|audio_format|camera|'" /> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()" /> </xsl:copy> </xsl:template> <xsl:template match="MasterClip"> <xsl:copy> <xsl:apply-templates select= "*[contains($fields,concat('|',@name,'|'))]" /> </xsl:copy> </xsl:template> </xsl:stylesheet> 鉴于此输入: <MasterClip> <Field name="audio_format" value="" /> <Field name="camera" value="" /> <Field name="some_other_name" value="" /> </MasterClip> 输出: <MasterClip> <Field name="audio_format" value="" /> <Field name="camera" value="" /> </MasterClip> 注意:此示例使用标识转换来复制Field元素.如果您不想直接复制,则只需创建一个单独的模板来处理这些元素. 另请注意:这与XSLT 1.0兼容. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |