我不会说英语,因为我是法国人,如果我犯了错误就很抱歉。 我有这段代码:
<xsl:when test="$PARAM=1">
<xsl:if test="LabelType=0 or LabelType=1 or LabelType=2 or LabelType=3 or LabelType=4 or LabelType=5 or LabelType=9 or LabelType=11 or LabelType=99 or LabelType=98 or LabelType=15 or LabelType=14" >
<div class="sst">
<table style="font-size: 12px">
<tr>
<td>
<xsl:choose>
<xsl:when test="LabelType=1">
<img src="Images/Atcd/stethoscope-icon.png" alt="Consultation" />
Consultation
</xsl:when>
<xsl:when test="LabelType=2">
<img src="Images/Atcd/Pen-icon.png" alt="Certificat" />
Certificat
</xsl:when>
<xsl:when test="LabelType=3">
<img src="Images/Atcd/Pen-3-icon.png" alt="Demande" />
Demande
</xsl:when>
<xsl:when test="LabelType=4">
<img src="Images/Atcd/pill-icon.png" alt="Prescription" />
Prescription
</xsl:when>
<xsl:when test="LabelType=5">
<img src="Images/options-icon2.png" alt="Formulaire" />
Formulaire
</xsl:when>
<xsl:when test="LabelType=8">
<img src="Images/Atcd/Bio-hazard-icon.png" alt="Vaccin" />
Vaccin
</xsl:when>
<xsl:when test="LabelType=9">
<img src="Images/Atcd/Coins-icon.png" alt="Reglement" />
Reglement
</xsl:when>
<xsl:when test="LabelType=10">
<img src="Images/Atcd/Paper-Clip-icon.png" alt="Binary" />
Binary
</xsl:when>
<xsl:when test="LabelType=11">
<img src="Images/Atcd/BPink.png" alt="Grossesse" />
Grossesse
</xsl:when>
<xsl:when test="LabelType=15">
<img src="Images/Atcd/stethoscope-icon.png" alt="Planche" />
Planche
</xsl:when>
<xsl:when test="LabelType=14">
<img src="Images/Atcd/stethoscope-icon.png" alt="Audio" />
Audio
</xsl:when>
<xsl:when test="LabelType=99">
<img src="Images/Atcd/twitter-bulb-icon.png" alt="Conclusion" />
Conclusion
</xsl:when>
<xsl:when test="LabelType=98">
<img src="Images/Atcd/You-make-me-hurt-icon.png" alt="A.T." />
A.T.
</xsl:when>
<xsl:otherwise>
<xsl:if test="LabelType != 0">
<img src="Images/Atcd/Medical-invoice-information-icon.png" alt="Inconnu" />
Inconnu <xsl:value-of select="LabelType"/>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
</td>
</tr>
</table>
</div>
<xsl:if test="Texte1">
<xsl:if test="Title1">
<div class="sst2">
<xsl:value-of disable-output-escaping="yes" select="Title1"/>
</div>
</xsl:if>
<div class="stx">
<xsl:value-of disable-output-escaping="yes" select="Texte1"/>
</div>
</xsl:if>
<xsl:if test="LabelType!=5 and LabelType!=15 and LabelType!=14">
<xsl:if test="Texte2">
<xsl:if test="Title2">
<div class="sst2">
<xsl:value-of disable-output-escaping="yes" select="Title2"/>
</div>
</xsl:if>
<div class="stx">
<xsl:value-of disable-output-escaping="yes" select="Texte2"/>
</div>
</xsl:if>
</xsl:if>
<xsl:if test="LabelType!=15 and LabelType!=14">
<xsl:if test="Texte3">
<xsl:if test="Title3">
<div class="sst2">
<xsl:value-of disable-output-escaping="yes" select="Title3"/>
</div>
</xsl:if>
<div class="stx">
<xsl:value-of disable-output-escaping="yes" select="Texte3"/>
</div>
</xsl:if>
</xsl:if>
<xsl:if test="LabelType!=15 and LabelType!=14">
<xsl:if test="Texte4">
<xsl:if test="Title4">
<div class="sst2">
<xsl:value-of disable-output-escaping="yes" select="Title4"/>
</div>
</xsl:if>
<div class="stx">
<xsl:value-of disable-output-escaping="yes" select="Texte4"/>
</div>
</xsl:if>
</xsl:if>
<xsl:apply-templates select="Suivis">
<xsl:with-param name="viewtype" select="$viewtype" />
</xsl:apply-templates>
</xsl:if>
</xsl:when>
这样做了很多“div”,它在chrome和IE上运行得非常好但是在Mozilla中,disable-output-escaping不起作用,我有一些HTML代码块没有被解释。我试了很多东西,但任何解决方案都有效。在Javascript中,我可以获取div的内容并将其放回到使用InnerHTML的其他div中,但它仅适用于一个div而不是所有div。我认为这是因为它是一个循环,我不能用同一个id调用多个div。你能帮帮我吗?我被封锁了一周。
XML:
<Document>
<LabelType>4</LabelType>
<Texte1><div><span style="font-family: inherit; font-size: inherit"><STRONG>ZOLPIDEM ALMUS 10 mg Cpr pell séc Plq/14</STRONG></span> <span style="font-family: inherit; color:#0000ff; font-size: inherit;">(2 boîtes)</span></div><div style="font-family: inherit; font-size: inherit"><div>Prendre un comprimé au coucher, pendant un mois </div></div><div>&nbsp;</div></Texte1>
</Document>
输出:
<div><span style="font-family: inherit; font-size: inherit"><STRONG>ZOLPIDEM ALMUS 10 mg Cpr pell séc Plq/14</STRONG></span> <span style="font-family: inherit; color:#0000ff; font-size: inherit;">(2 boîtes)</span></div><div style="font-family: inherit; font-size: inherit"><div>Prendre un comprimé au coucher, pendant un mois </div></div><div> </div>
我想要的是什么:
ZOLPIDEM ALMUS 10 mg CprpellécPlq/ 14(2boîtes) Prendreuncompriméaucoucher,pendant un mois
答案 0 :(得分:0)
依靠disable-output-escaping
通常是最糟糕的选择。你应该只在没有其他人的情况下这样做。 XSLT规范实际上说:
如果XSLT处理器控制输出结果树的方式,则它只能禁用输出转义。情况可能并非总是如此。例如,结果树可以用作另一个XSLT转换的源树而不是输出.XSLT处理器不需要支持禁用输出转义。 [...]
由于禁用输出转义可能不适用于所有XSLT处理器,并且可能导致格式不正确的XML,只有在没有替代时才应该使用
。
(XSLT 1.0建议,第16.4节;增加了重点)
如果您考虑一下,禁用像您这样的任务的输出转义会假定一个处理模型,其中重新解析转换的序列化输出。只有这样,具有HTML形式的文本才能转换为XSLT数据模型中的实际HTML元素。但是,当您在浏览器中执行转换时,对我来说似乎完全合理的是浏览器实际上输出结果,更不用说重新解析它了,因为转换结果已经是原则上可以按原样使用的文档。
最终,相关规范完全允许Firefox报告给定输入的行为。其他浏览器的行为不同也不是反指示(并且也允许您为它们描述的行为)。似乎不太可能任何依赖于disable-output-escaping
的方法 - 或者通常在重新解析XSLT输出的浏览器上 - 将满足您的需求。
基本上,您需要做的是解析某些输入元素的字符串值,如HTML(或XHTML),以获取要使用的节点集或结果树片段(假设XSLT 1.0)。这里已经多次提出了这些问题,除了disable-output-escaping
以外,所有提供任何解决方案的问题都得出了这个结论。提供具体变化的那些是:
XmlDocument.loadXml()
提供解决方案(这可能对您没有直接用处)parse()
函数(这依赖于客户端上可用的SAXON,这可能不是一个安全的假设。你)最终,如果你可以说服控制输入XML形式的人提供嵌入式HTML作为实际的XHTML片段而不是文本,那么这对你来说会更容易,并且可能更容易和更强大。如果确实那不是一个选择,那么你会得到我的同情。
答案 1 :(得分:0)
function decode() {
var divs = document.getElementsByTagName('div');
for(var i = 0; i < divs.length; i++) {
var div = divs[i];
if (div.className == "stx") {
div.innerHTML = div.firstChild.nodeValue;
}
}
}
我希望它能帮助其他民族。再见:))