我有这个源XML,即使用2个名称空间。
<SyncAssetMaster xmlns="http://schema.infor.com/InforOAGIS/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" languageCode="en-US" releaseID="9.2" systemEnvironmentCode="Production" versionID="2.8.0">
<ApplicationArea>
<CreationDateTime>2017-06-29T12:06:03Z</CreationDateTime>
</ApplicationArea>
<DataArea>
<AssetMaster>
<UserArea>
<D xmlns="http://schemas.datastream.net/MP_functions/MP0118_GetGridHeaderData_001_Result" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" n="380">SVP245</D>
<D xmlns="http://schemas.datastream.net/MP_functions/MP0118_GetGridHeaderData_001_Result" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" n="383">SVP245 v1</D>
</UserArea>
</AssetMaster>
</DataArea>
</SyncAssetMaster>
D元素有一个不同的命名空间,我在XSLT中声明,从在线的其他类似例子中可以看出:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my="http://schema.infor.com/InforOAGIS/2" xmlns:nsWS="http://schemas.datastream.net/MP_functions/MP0118_GetGridHeaderData_001_Result">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
<xsl:template match="//my:SyncAssetMaster">
<DataArea>
<CreationDateTime><xsl:value-of select="//my:CreationDateTime"/></CreationDateTime>
<ExtensionDate1><xsl:value-of select="//nsWS:UserArea/nsWS:D[@n='380']"/></ExtensionDate1>
</DataArea>
</xsl:template>
</xsl:stylesheet>
这是必需的输出。 ExtensionDate1不会出现。当然,它很简单,我感谢任何帮助。
<?xml version="1.0" encoding="UTF-8"?>
<DataArea xmlns:nsWS="http://schemas.datastream.net/MP_functions/MP0118_GetGridHeaderData_001_Result" xmlns:my="http://schema.infor.com/InforOAGIS/2">
<CreationDateTime>2017-06-29T12:06:03Z</CreationDateTime>
<ExtensionDate1>SVP245</ExtensionDate1>
</DataArea>
答案 0 :(得分:1)
UserArea
元素位于您绑定到前缀my
的命名空间中,因此您要在其中选择它,您需要使用my:UserArea
而不是nsWS:UserArea
试过了。