2017-08-10 22 views
0

これは私が何時間も働いてきたものですが、違った形ではありません。 Indesignで混合コンテンツにXMLループを使用するにはどうすればよいですか?

は、私は今、私の目標ではなく、単純な、すなわち、すべての要素を反復処理されるために、私はファイルを介してインポートする簡単なXML>インポートXML

<?xml version="1.0" encoding="UTF-8"?> 
<doc> 
    <page> 
     <p id="1"> 
      hello <test /> alien world <br /> from space 
     </p> 
     <p id="2"> 
      hello <test /> another alien world <br /> from space 
     </p> 
    </page> 
</doc> 

を持っています。これは、私がpタグ内の(混合された)コンテンツを繰り返し処理するまで、動作します。

// check version 
if (parseInt (app.version) > 4 && app.documents.length > 0){ 
main(); 
} 


function main() { 
// get active document 
var doc = app.activeDocument; 


// get xml that has been imported 
var xmlDocument = doc.xmlElements[0]; 


// get page elements 
const page_elements = xmlDocument.evaluateXPathExpression('/doc/page') 


// iterate over page elements 
for(var x = 0; x < page_elements.length; x++) { 
    // within each page element look for p elements 
    const p_elements = page_elements[x].evaluateXPathExpression('./p'); 

    for(var y = 0; y < p_elements.length; y++) { 

     var child_elements = p_elements[y].evaluateXPathExpression('./node()'); 

     for (var z = 0; z < child_elements.length; z++) { 
     $.writeln(child_elements[z].markupTag.name); 
     $.writeln(child_elements[z].contents); 
     } 
    } 
} 
} 

問題は、子アイテムの順序を覚えていないようです。

Extended Toolkitによると、 "hello test alien world br from space"の出力が "p hello world from space test br"です。

私はXmlElementsまたはXmlItemsの使用を含め、ここで利用可能であるドキュメント(http://jongware.mit.edu/idcs4js/index_XML%20Suite.html)に自分自身を基づかていますがありません勝つ

:-(と私は今では考えているかのう代替読むことですジャバスクリプト経由xmlファイル、その文字列からXMLオブジェクトを作成し、ここから先に進む。

答えて

0

あなたの出力は、それはあなたが期待したものだけではありませんが、正しいです。

pタグの内容は、内のすべてのテキストですこのタグは手に入れられるので

1 tag name - p 

2 tag contents = hello alien world from space 

3 name of the next tag in the collection -> test 

4 name of the next tag in the collection -> br 

testノードとbrノードの両方に内容がありません。空ノードです。

<test> some text</text>を挿入して、どのように動作するか試してみることができます。結果は

p 
hello alien world from space 
test 
some text 
br 
です。
関連する問題