如何使用命名空间从XML中选择?
发布时间:2020-12-16 07:53:10 所属栏目:百科 来源:网络整理
导读:我有一个 XML文档,如::: ?xml version="1.0" encoding="utf-8"??mso-application progid="Excel.Sheet"?Workbook xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-micro
我有一个
XML文档,如:::
<?xml version="1.0" encoding="utf-8"?> <?mso-application progid="Excel.Sheet"?> <Workbook xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="urn:schemas-microsoft-com:office:spreadsheet"> <Worksheet ss:Name="Worksheet1"> <Table> <Column ss:Width="100"></Column> <Row> <Cell ss:Index="1" ss:StyleID="headerStyle"> <Data ss:Type="String">Submitted By</Data> </Cell> </Row> <Row> <Cell ss:Index="1" ss:StyleID="alternatingItemStyle"> <Data ss:Type="String">Value1-0</Data> </Cell> </Row> </Table> <AutoFilter xmlns="urn:schemas-microsoft-com:office:excel" x:Range="R1C1:R1C5"></AutoFilter> </Worksheet> </Workbook> 问题是当尝试选择行时 <xsl:for-each select="//Row"> <xsl:copy-of select="."/> </xsl:for-each> 它不匹配我删除了所有的名称间距,它工作正常.那么,如何获得“选择”来匹配行?
在XSLT中为命名空间声明一个命名空间前缀,然后选择使用该前缀:
<xsl:stylesheet ... xmlns:os="urn:schemas-microsoft-com:office:spreadsheet"> ... <xsl:for-each select="//os:Row"> ... </xsl:for-each> ... </xsl:stylesheet> 这通常导致易于阅读的XPath.但是,XSLT / XPath工具生成以下等效代码: <xsl:for-each select="//*[local-name()='Row' = and namespace-uri()='urn:schemas-microsoft-com:office:spreadsheet']"> ... </xsl:for-each> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |