获取内容所在的文件名

时间:2015-06-29 07:16:53

标签: xslt xslt-2.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文件中都有一个短语。

我还有另一个XML文件,我需要获取phrase值,将它们与此列表中的短语值进行比较,并在列表中显示此phrase

 <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 个答案:

答案 0 :(得分: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()], '.')"/>

将匹配文件的文件名作为字符串序列提取到第二个变量中。