0

我有使用嵌入式实体声明的 XML 文件。在结果文件中,我需要将实体名称替换为它们指向的实际文件。但是不能在 XSLT 样式表中指向 AFAIK 实体,因为它们应该由 XML 解析器处理。

示例源文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE topic SYSTEM "../../../App/Converted-DTD.dtd" [

<!-- Begin Document Specific Declarations -->
<!NOTATION pdf SYSTEM "">
<!ENTITY image1 SYSTEM "graphics/img-1.svg" NDATA pdf>
<!ENTITY image2 SYSTEM "graphics/img-2.svg" NDATA pdf>
<!-- End Document Specific Declarations -->

]>

<topic>
    <title>My test topic</title>
        <body>
            <p>This is an image:
            <image entity="image1"/></p>
            <p>This is another image
            <image entity="image2"/></p>        
        </body>
</topic>

我需要的是一个将实体引用更改为实际href的文件:

<topic>
    <title>My test topic</title>
        <body>
            <p>This is an image:
            <image href="graphics/img-1.svg"/></p>
            <p>This is another image
            <image href="graphics/img-2.svg"/></p>        
        </body>
</topic>

我不能依赖在 DTD 中声明的实体,因为每个文件都有不同的实体指向不同的文件。

也许这是微不足道的,但我找不到一种方法来获取嵌入式文档的特定声明。

4

1 回答 1

0

你可以试试

  <xsl:template match="image/@entity">
      <xsl:attribute name="href" select="unparsed-entity-uri(.)"/>
  </xsl:template>
于 2020-06-25T15:32:12.537 回答