xml - XML - 将 xi:include 替换为引用文件中的实际内容
问题描述
是否有任何软件可以将<xi:include href="" />
XML 文件中的指令替换为引用文件中的实际内容?
或者有什么方法可以用一个简单的脚本来完成,也许是在 python 中?
编辑:谢谢 E.Wiest。这解决了我的问题。 解决方案确实是使用 XMLstarlet 和 XSLT 来转换 XML 并将 xi:include 替换为引用文件的内容。
E.Wiest 提供的链接中的 XSLT 直接工作,无需调整。这是我使用的脚本:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" />
<xsl:template match="/">
<xsl:apply-templates select="." mode="copy-no-namespaces"/>
</xsl:template>
<xsl:template match="*" mode="copy-no-namespaces">
<xsl:element name="{local-name()}" namespace="{namespace-uri()}">
<xsl:copy-of select="@*"/>
<xsl:apply-templates select="node()" mode="copy-no-namespaces"/>
</xsl:element>
</xsl:template>
<xsl:template match="comment()| processing-instruction()" mode="copy-no-namespaces">
<xsl:copy/>
</xsl:template>
</xsl:stylesheet>
我对 XMLstarlet 的唯一问题是它将转换后的 XML 输出到 CMD 提示屏幕,我找不到任何选项来指定和输出文件。只有一个选项可以替换源 XML 文件。但我不想这样做。
作为一种解决方案,我编写了一个简短的 python 脚本来检索输出并将其保存在不同的 XML 文件中。
解决方案
“我对 XMLstarlet 的唯一问题是它将转换后的 XML 输出到 CMD 提示屏幕,我找不到任何指定和输出文件的选项”
您可以像这样重定向输出
xmlstarlet sel -m ..... example.xml > output.xml
推荐阅读
- azure - ansible Zypper 模块中的 with_items 未调用库存文件变量
- java - URL 图片不使用增强现实 (AR) Android 播放视频
- javascript - 填写所有字段后禁用提交按钮(纯javascript)
- asciidoc - asciidoc 在句号“:”后删除缩进
- php - 如何在数据库查询中使用会话和数组来存储和显示数据
- python - 如何从所有可能的组合中获得所有可能的独特变体
- firebase - Firebase - 在 Cordova 中从 Direct Channel API 切换到 FCM HTTP v1 API
- python-3.x - Python Libcst:无法从访问者类中的节点生成代码
- android - “compileSdkVersion 未指定。请将其添加到 build.gradle ”,即使添加了 compileSdkVersion
- scala - Spark Scala数据框中的列拆分