我为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,以便图像能够添加。
答案 0 :(得分:0)
我没有在一个懒散的时间里使用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有一个内部子集,其中包含我的图像的实体声明。您不必手动添加这些;你可以使用“工具” - &gt; XMetaL中的“图形实体......”:
这是我在XMetaL中打开的XML:
如果您注意到,我的光标位于image
元素之后和doc
结束标记之内。由于此位置允许image
元素,因此工具栏中的图像按钮处于活动状态,并允许我添加新图像。如果我添加新图像,这就是它的样子:
要选择实际图像,您可以在“属性”检查器中编辑href
属性。它是一个下拉列表,列出了您声明的所有可用实体。
希望这足以让你前进。如果没有让我知道什么仍然无效。
答案 1 :(得分:0)
通常,您可以使用CTM文件将XMetaL配置为识别DTD的图像元素,该文件是与DTD关联的XMetaL自定义的一部分。请注意,这是使用XML实体在XMetaL中表示图形的替代;使用CTM,不必使用实体和ENTITY属性类型。
有关于XMetaL的CTM文件的一般信息,请参见:
http://xmetal.com/tutorials/customizing_xmetal_manually.html
搜索“&lt; Images&gt;”在该页面上找到关于在XMetaL中识别图像类型的确切内容。
但是(在这里谈到具体问题),看起来好像在使用DITA。当您使用专门的DITA DTD时,XMetaL应该为您自动生成正确的CTM;您不需要自己编辑CTM。因此,您的问题可能实际上是XMetaL支持问题。
您似乎在XMetaL社区论坛上发布了类似的问题,而我们(我在JustSystems工作,XMetaL的制造商)一直在协助您进入该主题。在这一点上,我会让援助继续在那里:
http://forums.xmetal.com/index.php/topic,3355.0.html
答案 2 :(得分:0)
感谢您的回复。但在我的情况下,我在一个DTD中定义了n个元素以及图像元素。我能够在xmetal中看到图像元素,并且出现了十字符号。但是,如果我双击该图标,则不显示属性窗口。我认为这是一些引用Href的内容。但我不确定究竟是什么问题..