Создание файлов DITA из имен файлов в листе Excel

Я работаю разработчиком информации.

Мне нужно создать файлы .dita с именами файлов, хранящимися в таблице Excel.

Файлы .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>

Пожалуйста, предоставьте решение этой проблемы.


person Deepak Janardhan    schedule 21.07.2012    source источник


Ответы (3)


Предполагая, что вы знаете, как программировать на Python и запускать приложения Python, вы можете попробовать следующее, поместив имена файлов в список. Если вам нужно читать из Excel, вы можете использовать один из пакетов для чтения файлов Excel в Python и использовать его вместо списка файлов ниже.

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()
person Bellave Jayaram    schedule 14.02.2013

Вы также можете создать для него макрос VBA в Excel. Выберите ячейку с именем файла и запустите макрос. Внимание: чтобы получить двойные кавычки на выходе, вам нужно поставить их дважды как ""

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

Конец подписки

person Ben Welman    schedule 19.02.2013

Обратите внимание, что ваша разметка DITA недействительна. Все темы DITA должны иметь элемент <title>, содержащий контент. Возможно, вы захотите добавить текст-заполнитель в качестве содержимого элемента <title>, например:

<title>Title goes here</title>

Кроме того, вам не нужна следующая разметка, поскольку это инструкции по обработке, добавленные редактором Arbortext Editor от PTC:

<?Pub Inc?>
<?Pub Caret -1?>
person Kristen James Eberlein    schedule 17.02.2013