我的第一个问题被标记为复制,但它不是一个重复
显示HTML与XML内嵌样式表
我希望这个问题不immediatley标记为重复的,只是因为主持人的一个读了前两句and've忽略了休息。
问题是不显示HTML中的XML结构,而表现出一个完整的动态XML结构,所有的标签和偶尔的彩色线条。 结构和内部田野里全是动态的,每场可以是正确的或错误的,这取决于xml文件喜欢比较。 所以一个场是在第一比较正确的,但在另一个比较这是错的。 XML的字段和结构可以由一个比较到另一个变化很大。 因为昨天我在寻找这个问题的对应和专业的解决方案。 后台进程:比较不同的XML文件,通过在Java的SOA微服务。 比较被org.custommonkey.xmlunit制成。 其结果必须是一个HTML弹出,我有什么显示了彩色线条明显的差异。
示例输出的xUnit DIFF结果的XPath
/ROOT[1]/MATDETAIL[1]/OUTPUT[1]/GENERAL[1]/CHANGED_BY[1]/text()[1]
通过XSLT转换源XML和的xUnit差异导致信息。
示例输入XML
<ROOT>
<MATDETAIL>
<OUTPUT>
<GENERAL>
<CREATED_ON/>
<CREATED_BY>ORIGINAL USER</CREATED_BY>
<LAST_CHNGE/>
<CHANGED_BY>NEW USER</CHANGED_BY>
</GENERAL>
<RETURN>
<TYPE>S</TYPE>
<MESSAGE/>
<LOG_NO/>
<LOG_MSG_NO>000000</LOG_MSG_NO>
</RETURN>
</OUTPUT>
</MATDETAIL>
</ROOT>
例如XSL转换
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*" mode="unescape"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/ROOT[1]/MATDETAIL[1]/OUTPUT[1]/GENERAL[1]/CHANGED_BY[1]">
<xsl:element name = "span">
<xsl:attribute name="style">font-weight:bold; color:red </xsl:attribute>
<xsl:copy>
<xsl:value-of select = "current()" />
</xsl:copy>
<xsl:text><== Expected: dasda</xsl:text>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
XSL转换的示例结果
<ROOT>
<MATDETAIL>
<OUTPUT>
<GENERAL>
<CREATED_ON/>
<CREATED_BY>ORIGINAL USER</CREATED_BY>
<LAST_CHNGE/>
<span style="font-weight:bold; color:red "><CHANGED_BY>NEW USER</CHANGED_BY><== Expected: ORIGINAL USER</span>
</GENERAL>
<RETURN>
<TYPE>S</TYPE>
<MESSAGE/>
<LOG_NO/>
<LOG_MSG_NO>000000</LOG_MSG_NO>
</RETURN>
</OUTPUT>
</MATDETAIL>
</ROOT>
我不能在HTML显示此XML结构,(所有)标签 ,正确和有色。 要么我已经拿不出标签,所以只有在XML的原始数据来看,没有标签,但线的颜色。 或者我得到的XML结构的所有数据,但不着色。 我试图取代内部XSLT的LT和GT字符,但失败了,或者Java转换后,这一结果显示出非常难看。 我的同事也意味着,我们不能以任何方式使用它。 由于XML Structur可每一次不同等完全动态的,我不能风格的CSS和标签定义的XML。 不幸的是,替代实施方案不是一个选项。 我必须与提供给我的手段以某种方式做到这一点。 (Java,XML和XSL,JS,HTML,CSS)。
我希望能得到好的想法溶质这一点。
我想感谢你在前进。