如何从所有元素中删除前缀urn,从根节点开始?
XML输入
<urn:client xmlns:urn='www.testing.com' xmlns:x='http://schemas.xmlsoap.org/soap/envelope/'>
<urn:header>
<urn:desc1>undefined</urn:desc1>
<urn:desc2>undefined</urn:desc2>
</urn:header>
<urn:itens1>
<urn:item1>undefined
<urn:name1>undefined</urn:name1>
<urn:name2>undefined</urn:name2>
</urn:item1>
</urn:itens1>
<urn:itens2>
<urn:item1>undefined
<urn:name1>undefined</urn:name1>
<urn:name2>undefined</urn:name2>
</urn:item1>
<urn:item2>undefined
<urn:name1>undefined</urn:name1>
<urn:name2>undefined</urn:name2>
</urn:item2>
</urn:itens2>
</urn:client>
XML输出
<urn:client xmlns:urn='www.testing.com' xmlns:x='http://schemas.xmlsoap.org/soap/envelope/'>
<header>
<desc1>undefined</desc1>
<desc2>undefined</desc2>
</header>
<itens1>
<item1>undefined
<name1>undefined</name1>
<name2>undefined</name2>
</item1>
</itens1>
<itens2>
<item1>undefined
<name1>undefined</name1>
<name2>undefined</name2>
</item1>
<item2>undefined
<name1>undefined</name1>
<name2>undefined</name2>
</item2>
</itens2>
</urn:client>
我尝试使用以下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" indent="yes"/>
<xsl:template match="*">
<xsl:element name="{local-name(.)}">
<xsl:apply-templates select="@* | node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="@*">
<xsl:attribute name="{local-name(.)}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
但是,根节点的前缀和命名空间也将被删除。
你们有什么想法吗?韩国社交协会
答案 0 :(得分:1)
怎么样:
import React from 'react';
import { connect } from 'react-redux';
import {action} from './actions.js';
import MyDumbComponent from './myDumbComponent.jsx';
function mapStateToProps(state)
{
return { something: state.xxxreducer.something };
}
function mapDispatchToProps(dispatch)
{
return {
doAction: ()=>{dispatch(action())}
};
}
const MyDumbComponentContainer = connect(
mapStateToProps,
mapDispatchToProps
)(MyDumbComponent);
// Uh... how can I hook into to componentDidMount()? This isn't
// a normal React class.
export default MyDumbComponentContainer;
这假定输入XML中的属性在非命名空间中(通常是这样)。实际上,给定的示例根本没有属性 - 因此您可以完全删除<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:strip-space elements="*"/>
<xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="/*">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
指令。