在试图转换以下XML时,我遇到了错误:
<triggers>
<add status="Success">
<from>
<ref:setting name = ".technicalContactEmail"/>
</from>
<recipients>
<ref:maintenanceJob out="creatorEmail"/>
</recipients>
<subject> Your download has been prepared</subject>
<body>
<ref:downloadOrderInfo out="downloadsUrl" store="@downloadsUrl"/>
<div style="color: #5C9731; font-size: 18pt; font-family: tahoma; margin-bottom: 15px;"> Your <ref:downloadOrderInfo out="fileNameLabel"/> (<ref:downloadOrderInfo out="fileName"/>) has been prepared. Please go to <a href="@downloadsUrl">My downloads page</a> in XXXX to download it.</div>
<br/>
<div>***This is an automatically generated email, please do not reply to this message. ***</div>
</body>
</add>
<add status="PartiallyFailed, Failed">
<from>
<ref:setting name = ".technicalContactEmail"/>
</from>
<recipients>
<ref:maintenanceJob out="creatorEmail"/>
</recipients>
<subject> Error when preparing download</subject>
<body>
<ref:downloadOrderInfo out="downloadsUrl" store="@downloadsUrl"/>
<div style="color: #5C9731; font-size: 18pt; font-family: tahoma; margin-bottom: 15px;"> An error occurred while preparing the <ref:downloadOrderInfo out="fileNameLabel"/>: <ref:downloadOrderInfo out="fileName"/>. You can retry and request the download again on the <a href="@downloadsUrl">My downloads page</a> in XXXX.</div>
<br/>
<div>***This is an automatically generated email, please do not reply to this message. ***</div>
</body>
</add>
使用这个XLST脚本:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="from"/>
</xsl:stylesheet>目标是从XML标记中删除“,但我遇到了错误,元素”ref:“的前缀”"ref“不绑定。
请注意,我不能只修改XSLT的XML条目。
发布于 2017-11-23 12:07:45
如果源XML包含名称空间,则必须指定它们,例如在根标记中。否则,这样的XML具有不正确的结构。
在您的例子中有一个名称空间- ref,所以将您的triggers标记更改为。
<triggers xmlns:ref="dummy.com">(或其他骨灰盒)就可以了。
备注:如果您的XSLT脚本包含对源XML中的任何名称空间的引用,则必须在XSLT中指定此命名空间。
发布于 2017-11-23 15:36:43
XSLT不会帮助您转换格式不是很好的XML。
当您得到糟糕的XML时,您的第一个想法应该始终是,这是从哪里来的,我们可以修复源以在将来生成好的XML吗?
如果你不能修好它,你应该担心的是,你是依赖供应商谁是交付有缺陷的产品。
如果最坏的情况发生在最坏的情况下,您可以考虑修复不好的XML。修复策略取决于腐败的规律和可预见性,以及修复行动是否合适。不幸的是,您可能不得不在修复工作中使用非XML工具(例如Perl脚本),因为大多数XML工具只处理格式良好的XML。
有些修复可以使用诸如HTML或validator.nu之类的工具进行。我不知道在这种情况下他们是否会帮你。
在这种情况下,我可能会通过添加一行来进行修复。
<wrapper xmlns:ref="something">在顶部和一个对应的
</wrapper> 在底部,然后在剩下的工作中使用XSLT。
发布于 2017-11-24 03:44:24
我还在Valdi_Bo建议的基础上在XSLT上添加了这段代码,现在它可以工作了。我向管理层建议,我们需要在XML上添加引用。谢谢。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ref="dummy.com"> https://stackoverflow.com/questions/47452249
复制相似问题