- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
编辑:
这是我能想到的 lxml 中最小的测试用例(完全用 Python 编写)
from lxml import etree
xslt_tree = etree.XML('''\
<?xml version="1.0" encoding="UTF-8"?>
<MD_Metadata xmlns="http://www.isotc211.org/2005/gmd" xmlns:gco="http://www.isotc211.org/2005/gco">
<language/>
<characterSet/>
</MD_Metadata>''')
doc = etree.XML('''\
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:gmd="http://www.isotc211.org/2005/gmd" >
<!-- This adds the contact tag if it doesn't exist -->
<xsl:template match="/gmd:MD_Metadata">
<xsl:copy-of select="*"/>
<xsl:message>
Worked
</xsl:message>
</xsl:template>
</xsl:stylesheet>''')
transform = etree.XSLT(doc)
result = transform(xslt_tree)
print transform.error_log
print (etree.tostring(result,pretty_print=True))
此输出
<language xmlns="http://www.isotc211.org/2005/gmd" xmlns:gco="http://www.isotc211.org/2005/gco"/>
什么时候应该输出
<MD_Metadata xmlns="http://www.isotc211.org/2005/gmd" xmlns:gco="http://www.isotc211.org/2005/gco">
<language/>
<characterSet/>
</MD_Metadata>
有什么想法吗?
<小时/>老问题
我有一个像这样的 xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<MD_Metadata xmlns="http://www.isotc211.org/2005/gmd">
<language>
<LanguageCode codeList="http://www.loc.gov/standards/iso639-2/php/code_list.php" codeListValue="eng" codeSpace="ISO639-2">eng</LanguageCode>
</language>
<characterSet>
<MD_CharacterSetCode codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_CharacterSetCode" codeListValue="utf8" codeSpace="ISOTC211/19115">utf8</MD_CharacterSetCode>
</characterSet>
.... etc
</MD_Metadata>
和一个 xlt 文件如下:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- Show all elements -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!-- This adds the contact tag if it doesn't exist -->
<xsl:template match="/gmd:MD_Metadata">
<xsl:copy-of select="@*|node()">
<xsl:if test="not(/gmd:MD_Metadata/gmd:contact)">
<xsl:element name="contact" namespace="http://www.isotc211.org/2005/gmd">
</xsl:element>
</xsl:if>
</xsl:copy-of>
</xsl:template>
</xsl:stylesheet>
当我在 Python 中的 lxml 中运行它时,我得到了 MD_Metadata 元素和返回的第一个子元素。但是,当我使用默认 Java 处理器或 Xalan 在 Eclipse WTP(Eclipse XSL 工具)中运行此程序时,我得到了从 MD_Metadata 标记返回的所有元素,包括字符集和之后的元素。对我来说,后者是标签的预期行为。我看不到在 Python 中调用转换时所做的任何事情,但以防万一:
xslt_root = lxml.etree.parse("XSLFile")
transform = lxml.etree.XSLT(xslt_root)
result_tree = transform(doc)
print (etree.tostring(result_tree,pretty_print=True))
我使用的两个处理器之间是否存在实质性差异,或者是否有其他解释?
最佳答案
您出现奇怪行为的原因是 xsl:copy-of
should be an empty element 。我只能假设某些引擎“有帮助”地尝试以某种未定义的方式解释 xsl:if
,从而导致了麻烦。
删除导致未定义行为的元素,它应该在不同引擎之间再次保持一致。
关于python - <copy-of> XLST 标签在不同处理器中的应用不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19915933/
编辑: 这是我能想到的 lxml 中最小的测试用例(完全用 Python 编写) from lxml import etree xslt_tree = etree.XML('''\
我按照 symfony 教程构建了我的第一个 symfony 项目。当我运行时: ./symfony propel:build-sql 我收到一个错误: [propel-sql] Could not
我是 C++ 的新手并继承了以下代码,这些代码应该使用 XSLT 文件转换给定的 XML 以仅吐出文本值。 它可以很好地加载 XML 和 XSLT,并且 transformnode() 调用返回成功,
我是一名编程爱好者,我从来没有与 DOM 相处得很好,所以我很确定我找不到答案,因为它对一个称职的程序员来说太明显了。 也就是说,互联网上有几个地方明确表示 xalt 样式表生成表单链接(来自 IBM
我只是想就如何改进我编写 XSLT 文件的方式寻求建议。我还想问问有没有人知道如何分离专门用于XSLT文件的CSS文件。任何建议都会对我有很大帮助 在此先感谢大家。
我有一个默认安装的 xampp,它有 php 5.3。我在使用 symfony 框架 CLI 创建数据库表时遇到了一个问题。我正在使用 Windows XP。这是我运行的命令: symfony pr
我计划在 azure 中编写一个 Web 应用程序,但我有一个问题......为了发送电子邮件,我使用了我前段时间编写的类库,我在 xlst 文件中有电子邮件模板,每次我想发送电子邮件时,我都会创建一
如何将 SUM() 函数应用于每个 hours 节点?我将把这个转换后的 XML 保存为 Excel,我希望它嵌入 SUM() 函数。经过研究,似乎有很多方法可以做到这一点,但没有一个真正适用于我的问
我是一名优秀的程序员,十分优秀!