2014-04-15 48 views
1

我已经为XMetal创建了specilized DTD,其中添加了图像元素。在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,使图像应该能够添加。

回答

0

我没有在looong时间使用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有一个包含我的形象与实体声明的内部子集。您不必手动添加这些;

enter image description here

这里是我的XML的开放XMetal中:

enter image description here

如果你注意到,我的光标在XMetal来得> “的图元......” - 您可以使用 “工具”在image元素之后,并在doc之内关闭标记。由于image元素被允许在这个位置,工具栏上的图像按钮被激活,将允许我补充一个新的形象。这是什么样子,如果我添加一个新的形象:

enter image description here

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

希望这是足以让你去。如果不让我知道什么仍然不起作用。

0

在一般情况下,您可以配置XMetal还使用CTM文件与DTD相关的XMetal还定制的一部分,以识别DTD的图像元素(一个或多个)。注意,这是一个替代使用XML实体来表示在图形XMetal中;使用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

0

感谢您的答复。但在我的情况下,我有n个在DTD中定义的元素以及图像元素。我可以看到xmetal中的图像元素,并出现十字符号。但是,如果我双击该图标,在属性窗口不displaying.I认为这是一些什么样是指HREF。但我不知道到底是什么问题..