xml - SAXON 忽略源 XML 中的命名空间
问题描述
环境:Java:8,Saxon-HE:9.9.0-2
我的情况是我认为微不足道的,但是,我无法得到令人满意的结果
源 xml 如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="mcf.xsl"?>
<mcf xmlns="http://example.com/#mcf"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://example.com/#mcf">
...
我写了xsl
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0" >
<xsl:output method="text" omit-xml-declaration="yes" indent="yes" media-type="text/csv" exclude-result-prefixes="#all" escape-uri-attributes="yes"/>
<xsl:template match="/" name="initial">
<xsl:variable name="md" select="./mcf/md"/>
<xsl:for-each select="$md/mi/mv">
<xsl:variable name="mii" select="substring-after(../@mii,'pg=')"/>
<xsl:variable name="ji" select="../job/@jobId"/>
<xsl:variable name="gpd" select="../gp/@d"/>
<xsl:variable name="gpet" select="../gp/@et"/>
<xsl:call-template name="mv">
<xsl:with-param name="mii" select="$mii"/>
<xsl:with-param name="ji" select="$ji"/>
<xsl:with-param name="gpd" select="$gpd"/>
<xsl:with-param name="gpet" select="$gpet"/>
</xsl:call-template>
<xsl:value-of select="$newline"/>
</xsl:for-each>
</xsl:template>
不幸的是,结果是空的。如果我从“mcf”中删除 atrybut 一切正常。
我尝试使用:
<xsl:copy copy-namespaces="no" inherit-namespaces="no">
然而,没有结果。
解决方案
命名空间声明不是属性。
由于您的源 XML 具有默认命名空间,因此您必须告诉您的样式表使用它:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xpath-default-namespace="http://example.com/#mcf"
exclude-result-prefixes="xs">
推荐阅读
- imagej - 如何在斐济或 ImageJ 中安装工具集
- haskell - Haskell 预期类型:[t0 a0] 实际类型:[a]
- ruby-on-rails - 为在 Rails 中签入的每个用户生成一个表单
- javascript - 使用 RegEx 将孟加拉数字(数字)标记为数字标记时出错
- javascript - 我可以检查是否从按钮的 onclick 属性调用了 JavaScript 函数吗?
- google-cloud-platform - 连接到安装在 ComputeEngine 上的 MySQL 数据库(点击部署)
- php - PHP 8 调用未定义函数 Illuminate\Encryption\openssl_cipher_iv_length()
- gtk - 当我使用 Glade 运行 GTK 时,我收到以下警告 - 找不到信号处理程序“on_window_main_destory”。你用 -rdnamic 编译了吗?
- python - 密钥 - 设置环境变量 PowerShell (Windows)
- typescript - 绘制分类数据后更新 ChartJS 填充