1

我正在尝试了解 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>
4

0 回答 0