【问题标题】:Embedding complex XSL into complex XML (CDA)将复杂的 XSL 嵌入到复杂的 XML (CDA) 中
【发布时间】:2015-07-03 02:16:33
【问题描述】:

我正在尝试将 this XSL 嵌入到 CDA Document 中。此特定文档的开头是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<ClinicalDocument xmlns="urn:hl7-org:v3">
    <realmCode code="US"/>
    <typeId .../>
    ...
    <recordTarget>
        <patientRole>
        ...

基于this SO question,我尝试了几件事,包括将XSL 粘贴到&lt;ClinicalDocument&gt; 元素中,并创建一个包含&lt;ClinicalDocument&gt;&lt;xsl:stylesheet&gt; 的新根元素。这些都不起作用。从做一些研究看来,我可能需要修改 XSL 以排除自身?我没有任何运气这样做,或者根本没有修改 XSL,因为我不太熟悉这项技术及其测试模式。

更新 Martin's answer 在 Chrome 中工作,但我在 IE 中得到了这个:

【问题讨论】:

  • 具体取决于您要完成的工作,最好自己进行转换,然后分发生成的 HTML 文件。
  • 不幸的是,这不是一个选择:(
  • 告诉我们你做了什么,我们可以告诉你你做错了什么。

标签: xml xslt hit cda


【解决方案1】:

如果您想嵌入 xsl:stylesheet 并使用 &lt;?xml-stylesheet type="text/xsl" href="#sheetId"?&gt; 引用它,那么您需要

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="#mySheet"?>
<!DOCTYPE ClinicalDocument [
<!ATTLIST xsl:stylesheet
  id    ID  #REQUIRED>
]>
<ClinicalDocument xmlns="urn:hl7-org:v3">
    <xsl:stylesheet id="mySheet" ...>...</xsl:stylesheet>
    <realmCode code="US"/>
    <typeId .../>
    ...
    <recordTarget>
        <patientRole>
    ...
</ClinicalDocument>

样式表太长,我无法检查所有代码,但至少第一个模板不使用任何通用路径,如 *,这可能会导致处理样式表元素本身,因此上述内容可能就足够了。

【讨论】:

  • Chrome 只显示一个空白页面,IE 抛出 XSLT8690: XSLT processing failed. Ideas?
  • 好的,是的,Chrome 确实可以工作,但 IE 会抛出同样的错误。我尝试了不同的 XSLT 并得到了相同的结果。
  • 我用完整的 IE 控制台输出更新了原始问题。
  • 我用 IE 11 尝试了一个简单的测试用例home.arcor.de/martin.honnen/xslt/test2015062601.xml,它似乎没有应用 XSLT,并且确实给出了您所命名的错误。我不知道 IE 是否曾经支持 href="#id" 表示法,抱歉。 Mozilla和Chrome好像都支持,不知道IE怎么办。
  • 叹了口气。我会继续寻找。我怀疑我们所有的客户都使用 Chrome/FF
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-11
  • 2021-02-21
  • 2022-12-31
相关资源
最近更新 更多