2012-11-29 75 views
0

A chapter-metadata.xml存儲在每本書isbn文件夾(有100個isbn文件夾,因此有100 chapter-metadata.xml),它們存儲在marklogic數據庫服務器和chapter-metadata中。 Xml包含一章或空的數據。如果chapter-metadata.xml只包含一個章節信息,那麼我想在該章節元素的章節元素下添加更多的章節信息(我的章節信息通用於所有章節)以及該章節的屬性和值,直到書本中有多少章節存儲isbn文件夾(我可以讀取並存儲在變量$chapter_sequence,如ch001 ch002 ch003 ch004 ..)或者如果chapter-metadata.xml沒有任何chaper信息,那麼它將創建章節元素與章節編號的屬性和值並添加我的信息,下面我已經放置了一些xml結構是一個章節的信息和我的信息是從元素keywordset如何在章節元數據中添加更多章節xml

<?xml version="1.0" encoding="UTF-8" ?> 
<chaptermetadata> 
<bookisbn>isbn number</bookisbn> 
<booktitle>Copyright</booktitle> 
<chapter id="ch001""> 
<keywordset> 
<keyword role="primary">context</keyword> 
<keyword role="secondary">Copyright</keyword> 
<keyword role="tertiary">subject</keyword> 
</keywordset> 
</chapter> 
</chaptermetadata> 

我要象下面這樣:

<?xml version="1.0" encoding="UTF-8" ?> 
<chaptermetadata> 
<bookisbn>isbn number</bookisbn> 
<booktitle>Copyright</booktitle> 
<chapter id="ch001""> 
<keywordset> 
<keyword role="primary">context</keyword> 
<keyword role="secondary">Copyright</keyword> 
<keyword role="tertiary">subject</keyword> 
</keywordset> 
</chapter> 

<chapter id="ch002""> 
<keywordset> 
<keyword role="primary">context</keyword> 
<keyword role="secondary">Copyright</keyword> 
<keyword role="tertiary">subject</keyword> 
</keywordset> 
</chapter> 
so on to last chapter which I store in veriable 
</chaptermetadata> 

感謝,

拉吉

+0

請添加一些段落和XML數據,而不是大量的點,沒有人會花時間回答如果您不接受在你的答案中不投資一些。 –

回答

2

的問題是難以遵循,但http://docs.marklogic.com/xdmp:directory和FLWOR表達式開始。假設你把它放到一個函數中。我會handwave一些輔助功能,你也必須執行,但功能可能是這個樣子:

declare function chaptermetadata($isbn as xs:string) 
as element(chaptermetadata) { 
    <chaptermetadata> 
    { 
    <bookisbn>{ $isbn }</bookisbn> 
    <booktitle>{ title($isbn) }</booktitle> 
    for $chapter in xdmp:directory(isbn-uri($isbn), 'infinity') 
    return element { fn:node-name($chapter) } { 
     $chapter/@*, 
     $chapter/keywordset } 
    } 
    <chaptermetadata> 
}; 

現在,這個代碼將幫助不大,除非你明白一切,它在做什麼,所以你可以修改它以適應您的需求。這是XQuery用例之一的變體,因此您可能會發現有助於理解和理解這些用例:http://www.w3.org/TR/xquery-use-cases/