我是信息开发人员。
我需要使用存储在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>
请提供解决方案。
答案 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?>