xml - XSLT 转换后的非法字符问题
问题描述
以下是我们的 XML 文件的输出日期:
XML
<attributes>
<![CDATA[Wodoodporność: 3 ATM - Średnica: 62 mm - Rodzaj: Męskie - Materiał: Stal nierdzewna - Materiał paska: Skóra - Mechanizm: Kwarcowy - Funkcje: Wielofunkcyjność - Szkiełko: Mineralne - Rodzaj produktu: Zegarek na rękę - Opakowanie: Oficjalne pudełko]]></attributes>
转换: XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<output>
<xsl:call-template name="tokenize">
<xsl:with-param name="text" select="normalize-space(attributes)"/>
</xsl:call-template>
</output>
</xsl:template>
<xsl:template name="tokenize">
<xsl:param name="text"/>
<xsl:param name="delimiter" select="' - '"/>
<xsl:variable name="token" select="substring-before(concat($text, $delimiter), $delimiter)" />
<xsl:if test="$token">
<xsl:element name="{translate(substring-before($token, ': '), ' ', '_')}">
<xsl:value-of select="substring-after($token, ': ')" />
</xsl:element>
</xsl:if>
<xsl:if test="contains($text, $delimiter)">
<!-- recursive call -->
<xsl:call-template name="tokenize">
<xsl:with-param name="text" select="substring-after($text, $delimiter)"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
目前我得到结果
<?xml version="1.0" encoding="UTF-8"?>
<output>
<Wodoodporność>3 ATM</Wodoodporność>
<Średnica>62 mm</Średnica>
<Rodzaj>Męskie</Rodzaj>
<Materiał>Stal nierdzewna</Materiał>
<Materiał_paska>Skóra</Materiał_paska>
<Mechanizm>Kwarcowy</Mechanizm>
<Funkcje>Wielofunkcyjność</Funkcje>
<Szkiełko>Mineralne</Szkiełko>
<Rodzaj_produktu>Zegarek na rękę</Rodzaj_produktu>
<Opakowanie>Oficjalne pudełko</Opakowanie>
</output>
有些文字不正确。有没有人有任何解决方案。
示例添加:<Średnica>[CDATA[ 62 mm ]</Średnica>
或任何其他解决方案来解决这个问题?
解决方案
推荐阅读
- amazon-web-services - 无法使用 golang SDK 在 AWS RDS 上运行 SQL 查询
- python - 在 Python 中使用透明背景 PNG 图像进行颜色检测
- sonarqube - Pylint 自定义检查器规则在 Sonar 中未知
- google-cloud-platform - 将文件写入 Google Drive 没有错误,但 Drive 文件夹中没有文件
- python - 如何将 %s 变成 {0}、{1} ...不那么笨重?
- c# - 如何正确地将项目添加到数据库和关注点分离
- sqlite - Flutter:Moor 和 floor ORM 之间的区别
- mysql - 这是什么意思“如果值变得大于可以存储的最大整数,则未定义自动增量机制的行为
- ios - 应用程序在后台运行时重置约束 - iOS 13
- python - 将 1 分钟间隔内的最后一个值分配给 pandas DataFrame 的行