+ -
当前位置:首页 → 问答吧 → 大侠们,快点现身吧!Xapth函数 fn:doc() 怎样使用,可以用其他方法替代吗?

大侠们,快点现身吧!Xapth函数 fn:doc() 怎样使用,可以用其他方法替代吗?

时间:2011-09-07

来源:互联网

目前使用XSLT样式表进行XML的转换,但是遇到了问题,真的希望大侠们赶快出现啊!
1.fn:doc($uri) 是xpath中的方法,其中的参数是一个URI.
实例1: fn:doc('http://192.168.1.15:7777/SAP_PM/AstMDGet_ps?wsdl') //访问XML
实例2:fn:doc('../Customers.xml');

上面的两个实例输出结果用<xsl:sequence select="fn:doc('....')"/> 时候,输出的都是一个标准的XML文件。
支持<xsl:sequence select="fn:doc('../Customers.xml')/Customers/Customer/Name"> 这种方式选取元素。

---------------------------------------------------------------------------------------------------
问题:
1.我声明一个参数 <xsl:param name="Customers"> 赋值是一个Customers.xml内容的字符串。
XML code

<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v2004 U (http://www.xmlspy.com) by Mr. Nobody (Altova GmbH) -->
<Customers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="Customers.xsd">
    <Customer>
        <Number>3</Number>
        <FirstName>Fred</FirstName>
        <LastName>Landis</LastName>
        <Address>
            <Street>Oakstreet</Street>
            <City>Boston</City>
            <ZIP>23320</ZIP>
            <State>MA</State>
        </Address>
    </Customer>
</Customers>


现在我想直接 这样子的输出<xsl:sequence select="$Customers/Customer/Number"/> ,但是结果什么也没有。为什么?
但是如果直接输出<xsl:sequence select="$Customers"/> 也是可以输出一个XML的。

--------------------------------------------------------------------------
需求:
1.想用一种传参的方式想到达fn:doc()函数的选择元素的效果。(就是上面的问题)
2.或者还有其它的xpath可以将XML内容字符串转换和 fn:doc('...')函数加载文件的返回结果一样呢?


问题不清楚的,可以再问。谢谢了!

作者: caonan123   发布时间: 2011-09-07

XML code
<xsl:sequence select="$(Customers/Customer/Number)"/>

试试?

作者: fyswords   发布时间: 2011-09-08