【问题标题】:defining an image element in DTD在 DTD 中定义图像元素
【发布时间】:2014-04-24 13:16:28
【问题描述】:

我为 XMetal 创建了一个特定的 DTD,其中添加了图像元素。

图片元素的结构如下

<!ENTITY  % Attr-com
    "id ID #IMPLIED
    class NMTOKEN #IMPLIED
    type NMTOKEN #IMPLIED
    style CDATA #IMPLIED
    lang NMTOKEN #IMPLIED"
>

<!ELEMENT image EMPTY>
<!ATTLIST image  %Attr-com; 
            alt    CDATA    #IMPLIED
            href    CDATA   #REQUIRED
            keyref  NMTOKEN #IMPLIED
            border  CDATA   #IMPLIED
            height  CDATA   #IMPLIED
            width   CDATA   #IMPLIED
            align   CDATA   #IMPLIED
            scale   NMTOKEN #IMPLIED
            placement  (inline | break)        "inline"
            conref CDATA   #IMPLIED>

但这在 Xmetal 中不起作用。 Xmetal 中的图像图标未突出显示。如果我使用元素列表中的图像元素,它将显示如下

<image/>

如何在Xmetal中使用这个DTD,让图片应该可以添加。

【问题讨论】:

    标签: xml dtd xmetal


    【解决方案1】:

    我已经很久没有使用 XMetaL,但我仍然有一个安装程序,可以向您展示我一直是如何制作图形的。

    您的所有属性都是 CDATA 或 NMTOKEN,因此 XMetaL 无法知道实际图像是什么。

    我所做的是将属性之一设为 ENTITY 类型。这将使 XMetaL 查找名称与属性值匹配的实体声明。

    实体应声明为 NDATA(符号数据)系统实体。您还需要确保声明符号。在我的示例中,我使用的是 png。

    这是我的 DTD 和 XML 的示例。

    DTD

    <!NOTATION PNG PUBLIC "PNG 1.0" "image/png">
    <!ELEMENT doc (p|image)+>
    <!ELEMENT p (#PCDATA)>
    <!ELEMENT image EMPTY>
    <!ATTLIST image
        href ENTITY #REQUIRED>
    

    XML

    <!DOCTYPE doc SYSTEM "test.dtd" [
    <!ENTITY test.png SYSTEM "images/test.png" NDATA PNG>
    ]>
    <doc>
    <p>Test image:</p>
    <image href="test.png"/>
    </doc>
    

    注意:我的 XML 有一个内部子集,其中包含我的图像的实体声明。您不必手动添加这些;您可以在 XMetaL 中使用“工具”->“图形实体...”:

    这是我在 XMetaL 中打开的 XML:

    如果您注意到,我的光标位于 image 元素之后和 doc 结束标记的内部。由于此位置允许使用image 元素,因此工具栏中的图像按钮处于活动状态,允许我添加新图像。如果我添加一个新图像,这就是它的样子:

    要选择实际图像,您可以在属性检查器中编辑href 属性。它是一个下拉列表,列出了您已声明的所有可用实体。

    希望这足以让您继续前进。如果不让我知道什么仍然无法正常工作。

    【讨论】:

      【解决方案2】:

      通常,您可以配置 XMetaL 以识别 DTD 的图像元素,方法是使用 CTM 文件,该文件是与 DTD 关联的 XMetaL 自定义的一部分。请注意,这是在 XMetaL 中使用 XML 实体表示图形的一种替代方法;对于 CTM,不必使用实体和 ENTITY 属性类型。

      这里有关于 XMetaL 的 CTM 文件的一般信息:
      http://xmetal.com/tutorials/customizing_xmetal_manually.html
      在该页面上搜索“”以准确找到有关在 XMetaL 中识别图像类型的信息。

      但是(说到这里的具体问题),看起来好像您正在使用 DITA。当您使用专门的 DITA DTD 时,XMetaL 应该会自动为您生成正确的 CTM;您不需要自己编辑 CTM。因此,您的问题可能实际上是 XMetaL 支持问题。

      您似乎在 XMetaL 社区论坛上发布了一个类似的问题,我们(我在 JustSystems 工作,XMetaL 的制造商)一直在帮助您解决这个问题。在这一点上,我会让帮助继续在那里:
      http://forums.xmetal.com/index.php/topic,3355.0.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-26
        • 2011-09-07
        • 1970-01-01
        • 2021-10-15
        • 1970-01-01
        • 1970-01-01
        • 2011-12-15
        • 1970-01-01
        相关资源
        最近更新 更多