0
私はXSLTの新機能です。私はこのようなXMLを作成する必要があります。XSLTを使用したXMLのマルチレベルおよび複数のネームスペース
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<GetRecordResponse xmlns="urn:RedIron.RetailRepository.Services.SearchService">
<GetRecordResult xmlns:a="urn:RedIron.RetailRepository.Core" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
私はこのlavelまでxmlを生成することができます。しかし、複数のlavel名前空間が使用されているので、私は混乱します。
<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<GetRecordResponse xmlns="urn:RedIron.RetailRepository.Services.SearchService"/>
</s:Body>
</s:Envelope>
私はあなたがこれらの名前空間ノードを追加したい場合は、あなたがxsl:namespace
を使用することができ、同じ
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
version="2.0">
<xsl:output indent="yes"/>
<xsl:template match = "/" >
<s:Envelope >
<s:Body>
<xsl:element name = "GetRecordResponse" namespace = "urn:RedIron.RetailRepository.Services.SearchService" >
</xsl:element>
</s:Body>
</s:Envelope>
</xsl:template>
</xsl:stylesheet>
からデフォルトnamespceを継承しないように、それにデフォルトの名前空間を指定する最初のオプションは、それが与える動作しません。 GetRecordResultで空白の要素。 2番目の選択肢を使用して、空のxmlns = ""を取得します。このように –
sagar
アクションはhttp://xsltransform.net/bFWR5Erとして動作します。最初のオプションは、XSLT 1.0では 'xsl:namespace'が利用できないため、XSLT 2.0プロセッサが動作することが必要です。コードを別のテンプレートに移動し、 "GetRecordResponse"からデフォルトの名前空間を継承しない限り、2番目のオプションはxmlns = ""になりません。私の答えに編集を参照してください。 –
ありがとうTim。完璧に動作します。私はxsltについてもっと学ぶ必要があると思う。私に何かお勧めしますか? – sagar