Ven*_*tsa 1 xslt special-characters
我正在处理下面的 XML,其中我需要删除名字中的特殊字符。(Andr\xc3\xa9s) 中的 \xc3\xa9 不确定这个字符的实际名称是什么。如果我按原样处理名字,那么供应商系统就会失败
\n\n<?xml version="1.0" encoding="UTF-8"?>\n<reportentry>\n<reportdata>\n <id>12345</id>\n <firstname>Andr\xc3\xa9s</firstname>\n <lastname>Williams</lastname>\n</reportdata>\n</reportentry>\nRun Code Online (Sandbox Code Playgroud)\n\n我只是尝试了有效的替换功能,下面是代码。不知道有没有更好的方法来处理?有什么建议 ?
\n\n <xsl:value-of select="replace($string1, \'\xc3\xa9\', \'e\')"/>\nRun Code Online (Sandbox Code Playgroud)\n\n完整代码
\n\n<?xml version="1.0" encoding="UTF-8"?>\n<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"\nxmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0">\n\n<xsl:variable name="string1" select="/reportentry/reportdata/firstname"/>\n<xsl:variable name="comma" select="\',\'"/>\n<xsl:output method="text" omit-xml-declaration="yes"/>\n\n<xsl:template match="/reportentry">\n\n <xsl:value-of select="reportdata/id"/>\n <xsl:value-of select="$comma"/>\n <xsl:value-of select="replace($string1, \'\xc3\xa9\', \'e\')"/>\n <xsl:value-of select="$comma"/>\n <xsl:value-of select="reportdata/lastname"/>\n\n</xsl:template>\n</xsl:stylesheet>\nRun Code Online (Sandbox Code Playgroud)\n\n我预期结果为 12345,Andres,Williams
\n您可以通过使用normalize-unicode()将字符串转换为分解范式 (NFD),然后使用replace()删除所有“非空格标记”字符(类别Mn)来去除大多数变音符号。
所以replace(normalize-unicode(xxx, 'NFD'), '\p{Mn}', '')
未测试。
但最好对接收应用程序进行现代化改造,以便它可以处理国际名称......
| 归档时间: |
|
| 查看次数: |
1102 次 |
| 最近记录: |