bash to xproc (от unix до XML) - PullRequest
       22

bash to xproc (от unix до XML)

0 голосов
/ 02 октября 2018

Я пытаюсь понять, как работает xproc, и конвертировать bash-скрипты в xproc.

Я привык к bash-скриптингу, но теперь идея состоит в том, чтобы все было в формате XML ...

вот мой bash-скрипт: он создает некоторую информацию в массивах, а затем перебирает один из массивов для записи файла с использованием cat.

 #!/bin/bash

 Titel=("Star Wars" "Eraserhead" "Unforgiven")
 Jahr=(1978 1976 1992)
 Genre=("SciFi" "Horror" "Western")
 Regisseur=("George Lucas" "David Lynch" "Clint Eastwood")

 Film=(Titel Jahr Genre Regisseur)

 Datum=()

 echo "${Titel[@]}"
 echo "${Jahr[@]}"
 echo "${Genre[@]}"
 echo "${Regisseur[@]}"
 echo "${Film[@]}"
 echo "${Datum[@]}"

   for j in "${!Jahr[@]}"
   do
    Datum+=(${Jahr[j]})
     cat <<EOF>> Filmsammlung.txt
 ${Titel[j]}
 ${Jahr[j]}
 ${Genre[j]}
 ${Regisseur[j]}

 EOF

 done

А вот соответствующий xproc (я думаю, что ...)

 <?xml version="1.0" encoding="UTF-8"?>
 <p:declare-step xmlns:p="http://www.w3.org/ns/xproc" xmlns:c="http://www.w3.org/ns/xproc-step" version="1.0">
    <p:input port="source">
       <p:document href="filmsammlung.xml"/>
    </p:input>
    <p:output port="result" sequence="true"/>
    <p:for-each>
 <!-- this should iterate over Jahr: for j in "${!Jahr[@]}"-->
       <p:iteration-source select="//Jahr"/>
       <p:output port="result"/>
 <!-- do Datum+=(${Jahr[j]}) (I am not renaming my aray, but cheating by creating a new array called Datum...)-->
       <p:rename match="/Jahr" new-name="Datum"/>
 <!-- this executes cat for each iteration..-->
          <p:exec command="cat" result-is-xml="true" name="exec"/>
 <!-- this deals with possible errors...-->
          <p:identity>
             <p:input port="source">
                <p:pipe port="errors" step="exec"/>
             </p:input>
           </p:identity>
           <p:store href="fehler.xml"/>
           <p:identity>
              <p:input port="source">
                 <p:pipe port="exit-status" step="exec"/>
              </p:input>
           </p:identity>
           <p:store href="exit_status.xml"/>
           <p:identity>
              <p:input port="source">
           <p:pipe port="result" step="exec"/>
              </p:input>
           </p:identity>
           <p:store href="resultat.xml"/>
    </p:for-each>
 </p:declare-step>

Имеет ли это смысл?Я новичок в xproc - как я могу проверить, что делает xproc?

Filmsammlung.xml выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<FilmSammlung>
  <Film>
    <Titel>Star Wars: Episode IV - A New Hope</Titel>
    <Jahr>1978</Jahr>
    <Genre>SciFi</Genre>
    <Regisseur>George Lucas</Regisseur>
    <Produzent>George Lucas</Produzent>
    <Cast>
      <Hauptdarsteller>Mark Hamill</Hauptdarsteller>
      <Hauptdarsteller>Harrison Ford</Hauptdarsteller>
    </Cast>
    <Laenge>121 min</Laenge>
    <Autor>George Lucas</Autor>
  </Film>
  <Film>
    <Titel>Eraserhead</Titel>
    <Jahr>1976</Jahr>
    <Genre>Horror</Genre>
    <Regisseur>David Lynch</Regisseur>
    <Produzent>David Lynch</Produzent>
    <Cast>
      <Hauptdarsteller>Jack Nance</Hauptdarsteller>
      <Hauptdarsteller>Allen Joseph</Hauptdarsteller>
    </Cast>
    <Laenge>89 min</Laenge>
    <Autor>David Lynch</Autor>
  </Film>
  <Film>
    <Titel>Unforgiven</Titel>
    <Jahr>1992</Jahr>
    <Genre>Western</Genre>
    <Regisseur>Clint Eastwood</Regisseur>
    <Produzent>Clint Eastwood</Produzent>
    <Cast>
      <Hauptdarsteller>Clint Eastwood</Hauptdarsteller>
      <Hauptdarsteller>Gene Hackman</Hauptdarsteller>
    </Cast>
    <Laenge>131 min</Laenge>
    <Autor>David Webb Peoples</Autor>
  </Film>
</FilmSammlung>
...