从Excel工作表中的文件名生成DITA文件

时间:2012-07-21 04:16:38

标签: xml dita

我是信息开发人员。

我需要使用存储在Excel工作表中的文件名创建 .dita 文件。

.dita文件是XML文件。文件的结构应该相同。结构如下:

<?xml version="1.0" encoding="UTF-8"?>
<!--Arbortext, Inc., 1988-2011, v.4002-->
<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"
"concept.dtd">
<?Pub Inc?>
<concept id="concept-1-43B80068" xml:lang="en">
<title></title><?Pub Caret -1?>
<shortdesc></shortdesc>
<conbody>
<p></p>
</conbody>
</concept>

然后我需要创建这些文件的映射,如下所示:

<map xml:lang="en">
<topicref href = "topic1.dita">
<topicref href = "topic2.dita">
</topicref>
</map>

请提供解决方案。

3 个答案:

答案 0 :(得分:2)

假设您知道如何使用Python编程并运行Python应用程序,您可以尝试以下将文件名放在列表中的位置。如果您需要从Excel中读取,那么您可以使用其中一个包来读取Python中的Excel文件,并使用它来代替下面的文件列表。

import os

filelist = ["topic1",
"topic2"
]    # array of dita files

basedir = r'C:/DITA_files/'

# create files
if not os.path.exists(basedir):
    os.mkdir(basedir) 

conceptstr = '''<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"
"concept.dtd">
<?Pub Inc?>
<concept id="concept-1-%s" xml:lang="en">
<title></title><?Pub Caret -1?>
<shortdesc></shortdesc>
<conbody>
<p></p>
</conbody>
</concept>
'''

id_len = 8
# create concept files and map
for file in filelist:
    print 'Writing ' + basedir + file + '.dita'
    cf = open(basedir + file +'.dita', 'w')
    cf.write(conceptstr) % [random.choice(string.ascii_letters) for n in xrange(id_len)]
    cf.close()

map = open(basedir + 'mymap.ditamap','wt')

map.write('<map xml:lang="en">')
for file in filelist:
    map.write(r'''<topicref href="%s.dita"/>
''' % ( register, register ) )
    map.write('</map>')
    map.close()

答案 1 :(得分:2)

您还可以在Excel中为其创建VBA宏。选择包含文件名的单元格并运行宏。 注意:要在输出中获得双引号,您需要将它们设置为“”

两次
Sub CreateDitaConcept()
Dim sFileName As String
Dim iFileNum As Integer

'Read filename from selected cell
sFileName = Selection.Value
'Get a free file number
iFileNum = FreeFile
'Open the file for output
Open sFileName For Output As iFileNum
'Print text to the file
Print #iFileNum, "<?xml version=""1.0"" encoding=""UTF-8""?>"
Print #iFileNum, "<!-- Arbortext etc -->"
Print #iFileNum, "<!DOCTYPE concept PUBLIC ""-//OASIS//DTD DITA Concept//EN"" ""concept.dtd"">"
Print #iFileNum, "<concept id=""concept_id"" xml:lang=""en"">"
Print #iFileNum, "<title>Concept title</title>"
Print #iFileNum, "<shortdesc></shortdesc>"
Print #iFileNum, "<conbody>"
Print #iFileNum, "<p>paragraph</p>"
Print #iFileNum, "</conbody>"
Print #iFileNum, "</concept>"
'Close file
Close #iFileNum

End Sub

答案 2 :(得分:1)

请注意您的DITA标记无效。所有DITA主题必须具有包含内容的<title>元素。您可能希望添加一些占位符文本作为<title>元素的内容,例如:

<title>Title goes here</title>

此外,您不需要以下标记,因为这些是PTC的Arbortext Editor添加的处理说明:

<?Pub Inc?>
<?Pub Caret -1?>