2015-06-29 42 views
0

我有下面的XML。獲取文件名,其中的內容存在於

<?xml version="1.0" encoding="UTF-8"?> 
<entry> 
    <file name="FILE_ORD_01.xml"/> 
    <file name="FILE_ORD_02.xml"/> 
    <file name="FILE_ORD_03.xml"/> 
    <file name="FILE_ORD_04.xml"/> 
    <file name="FILE_ORD_05.xml"/> 
</entry> 

基本上這是一個文件夾我在 在每一個XML文件列表有一個短語。

,我已經從那裏我需要得到phrase值與短語的值在此列表中對它們進行比較,並給在名單這個phrase存在於另一個XML文件。

<xsl:variable name="prent"> 
        <xsl:for-each select="document('C:\Users\u0138039\Desktop\Proview\MY\2015\title.xml')/entry/file"> 
         <xsl:value-of select="normalize-space(document(concat('C:\Users\u0138039\Desktop\Proview\MY\2015\',./@name))/chapter[//page/@num=regex-group(1)])"/> 
        </xsl:for-each> 
       </xsl:variable> 

使用此代碼我能夠看到在哪個文件中找到的短語匹配,例如,如果在FILE_ORD_03.xml中找到匹配,我想要打印FILE_ORD_03

這裏基本上我想從中獲取短語所在的文件名上面的列表並打印它的值。通過使用base-uri()或獲取屬性值直接

感謝

回答

1

我不認爲你可以提取您的變量,因爲你有一個標準化的字符串值,簡單的文本節點的值,但我覺得你想要的東西沿的

<xsl:variable name="file-names" as="xs:string*" 
    select="document(document('file:///C:/Users/u0138039/Desktop/Proview/MY/2015/title.xml')/entry/file/@name)/chapter[//page/@name = regex-group(1)]/substring-before(tokenize(document-uri(/), '/')[last()], '.')"/> 

線來提取匹配的文件(一個或多個)作爲字符串的序列轉換爲第二變量的文件名(多個)。