Xml XSLT一代又一代地崩溃。所有属性都是不可见的
我一直在替换以下角色,这很好。但是,在xslt之后,结果将丢失所有属性名称 一直在研究stackoverflow,发现了一些很棒的代码,但由于某些原因,我无法让它正常工作 我当前的代码: ` ` 工作示例: 如何修复此问题?XML中没有属性。缺少的是你的元素。那是因为你没有复制它们。试着这样做:Xml XSLT一代又一代地崩溃。所有属性都是不可见的,xml,xslt,xslt-2.0,Xml,Xslt,Xslt 2.0,我一直在替换以下角色,这很好。但是,在xslt之后,结果将丢失所有属性名称 一直在研究stackoverflow,发现了一些很棒的代码,但由于某些原因,我无法让它正常工作 我当前的代码: ` ` 工作示例: 如何修复此问题?XML中没有属性。缺少的是你的元素。那是因为你没有复制它们。试着这样做: <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:outpu
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:variable name="OddChars">ÁÂÀÄÖÓÔÒØÅÜÉŠŽáâàäöôòøåüéšβźý</xsl:variable>
<xsl:variable name="RegChars">AAAAOOOOOAUESZaaaaooooauesszy</xsl:variable>
<xsl:template match="text()">
<xsl:value-of select="translate(replace(replace(., 'ß','ss'), 'ẞ', 'SS'), $OddChars, $RegChars)"/>
</xsl:template>
</xsl:stylesheet>
因为您使用的是XSLT2.0,所以还可以使用 看起来很多,但是你可以把角色映射分解成一个单独的样式表,然后使用它 例如 XSLT2.0
Fiddle:必须选择要快速的标记,然后将其更改。谢谢你的回答,这就解决了问题。我明白我错在哪里了,我对xslt不太了解。@DanielHaley谢谢。不幸的是,我当前的测试环境没有提供这样的警告。我想我已经解决了。我喜欢你的解决方案。原因是,这确实使它更容易阅读和更新。尤其是像ß这样的角色。不需要先更换。我已经使用了一个replace-else软件,其中彼此之间大约有15个replace。。。。。不是最好的解决方案,但它是有效的!我可能会用您的代码更新它:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:variable name="OddChars">ÁÂÀÄÖÓÔÒØÅÜÉŠŽáâàäöôòøåüéšβźý</xsl:variable>
<xsl:variable name="RegChars">AAAAOOOOOAUESZaaaaooooauesszy</xsl:variable>
<xsl:template match="text()">
<xsl:value-of select="translate(replace(replace(., 'ß','ss'), 'ẞ', 'SS'), $OddChars, $RegChars)"/>
</xsl:template>
</xsl:stylesheet>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="*">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:variable name="OddChars">ÁÂÀÄÖÓÔÒØÅÜÉŠŽáâàäöôòøåüéšβźý</xsl:variable>
<xsl:variable name="RegChars">AAAAOOOOOAUESZaaaaooooauesszy</xsl:variable>
<xsl:template match="text()">
<xsl:value-of select="translate(replace(replace(., 'ß','ss'), 'ẞ', 'SS'), $OddChars, $RegChars)"/>
</xsl:template>
<xsl:template match="@*">
<xsl:attribute name="{name()}">
<xsl:value-of select="translate(replace(replace(., 'ß','ss'), 'ẞ', 'SS'), $OddChars, $RegChars)"/>
</xsl:attribute>
</xsl:template>
<xsl:template match="comment() | processing-instruction()">
<xsl:copy/>
</xsl:template>
</xsl:stylesheet>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" use-character-maps="cm"/>
<xsl:strip-space elements="*"/>
<xsl:character-map name="cm">
<xsl:output-character character="Á" string="A"/>
<xsl:output-character character="Â" string="A"/>
<xsl:output-character character="À" string="A"/>
<xsl:output-character character="Ä" string="A"/>
<xsl:output-character character="Ö" string="O"/>
<xsl:output-character character="Ó" string="O"/>
<xsl:output-character character="Ô" string="O"/>
<xsl:output-character character="Ò" string="O"/>
<xsl:output-character character="Ø" string="O"/>
<xsl:output-character character="Å" string="A"/>
<xsl:output-character character="Ü" string="U"/>
<xsl:output-character character="É" string="E"/>
<xsl:output-character character="Š" string="S"/>
<xsl:output-character character="Ž" string="Z"/>
<xsl:output-character character="á" string="a"/>
<xsl:output-character character="â" string="a"/>
<xsl:output-character character="à" string="a"/>
<xsl:output-character character="ä" string="a"/>
<xsl:output-character character="ö" string="o"/>
<xsl:output-character character="ô" string="o"/>
<xsl:output-character character="ò" string="o"/>
<xsl:output-character character="ø" string="o"/>
<xsl:output-character character="å" string="a"/>
<xsl:output-character character="ü" string="u"/>
<xsl:output-character character="é" string="e"/>
<xsl:output-character character="š" string="s"/>
<xsl:output-character character="β" string="s"/>
<xsl:output-character character="ź" string="z"/>
<xsl:output-character character="ý" string="y"/>
<xsl:output-character character="ß" string="ss"/>
<xsl:output-character character="ẞ" string="SS"/>
</xsl:character-map>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>