提问人:vij 提问时间:4/7/2023 最后编辑:Conal Tuohyvij 更新时间:4/10/2023 访问量:72
在 xml 标头中声明添加的命名空间
Declare added namespace in xml header
问:
我想在头节点中移动和声明命名空间,并从子节点中删除声明。xmlns:ns2="urn:us:gov:hhs:acf:cseiwo
EIWORoot
我的输入XML:
<ns1:EIWORoot xmlns:ns1="urn:us:gov:hhs:acf:eiwo">
<ns1:DocumentFileHeader>
<ns2:ControlNumber xmlns:ns2="urn:us:gov:hhs:acf:cseiwo"></ns2:ControlNumber>
<ns2:StateTribeTerritoryCode xmlns:ns2="urn:us:gov:hhs:acf:cseiwo"></ns2:StateTribeTerritoryCode>
<ns2:EINText xmlns:ns2="urn:us:gov:hhs:acf:cseiwo"></ns2:EINText>
<ns2:CreationDate xmlns:ns2="urn:us:gov:hhs:acf:cseiwo"></ns2:CreationDate>
<ns2:CreationTime xmlns:ns2="urn:us:gov:hhs:acf:cseiwo"></ns2:CreationTime>
<ns1:DocumentCode>FHA</ns1:DocumentCode>
</ns1:DocumentFileHeader>
<ns1:EIWOBatch>
<ns1:DocumentBatchHeader>
<ns2:ControlNumber xmlns:ns2="urn:us:gov:hhs:acf:cseiwo"></ns2:ControlNumber>
<ns2:StateTribeTerritoryCode xmlns:ns2="urn:us:gov:hhs:acf:cseiwo"></ns2:StateTribeTerritoryCode>
<ns2:EINText xmlns:ns2="urn:us:gov:hhs:acf:cseiwo"></ns2:EINText>
<ns2:CreationDate xmlns:ns2="urn:us:gov:hhs:acf:cseiwo"></ns2:CreationDate>
<ns2:CreationTime xmlns:ns2="urn:us:gov:hhs:acf:cseiwo"></ns2:CreationTime>
<ns1:DocumentCode></ns1:DocumentCode>
</ns1:DocumentBatchHeader>
<ns1:EIWO>
<ns1:IdentifyingInfo>
<ns1:DocumentDate></ns1:DocumentDate>
<ns1:DocumentActionCode></ns1:DocumentActionCode>
<ns1:CaseIdentifier></ns1:CaseIdentifier>
<ns1:OrderIdentifier></ns1:OrderIdentifier>
<ns1:DocumentTrackingNumber></ns1:DocumentTrackingNumber>
</ns1:IdentifyingInfo>
<ns1:Authority>
<ns1:IssuingStateTribeTerritoryName></ns1:IssuingStateTribeTerritoryName>
<ns1:IssuingTribunalName></ns1:IssuingTribunalName>
<ns1:EmploymentPlaceName></ns1:EmploymentPlaceName>
<ns1:GovernmentOfficialName></ns1:GovernmentOfficialName>
<ns1:IssuingOfficialTitleText></ns1:IssuingOfficialTitleText>
<ns1:SendEmployeeCopyIndicator></ns1:SendEmployeeCopyIndicator>
</ns1:Authority>
<ns1:LegalProvision>
<ns1:PenaltyLiabilityText></ns1:PenaltyLiabilityText>
<ns1:AntiDiscriminationText></ns1:AntiDiscriminationText>
<ns1:PayeeWithholdingLimitsText></ns1:PayeeWithholdingLimitsText>
</ns1:LegalProvision>
<ns1:Person>
<ns1:Employee>
<ns1:PersonName></ns1:PersonName>
<ns1:PersonSSN></ns1:PersonSSN>
<ns1:PersonBirthDate></ns1:PersonBirthDate>
</ns1:Employee>
<ns1:Child>
<ns1:PersonName>
<ns1:LastName></ns1:LastName>
<ns1:FirstName></ns1:FirstName>
</ns1:PersonName>
<ns1:PersonBirthDate></ns1:PersonBirthDate>
</ns1:Child>
</ns1:Person>
</ns1:EIWO>
</ns1:EIWOBatch>
<ns1:DocumentFileTrailer>
<ns2:ControlNumber xmlns:ns2="urn:us:gov:hhs:acf:cseiwo"></ns2:ControlNumber>
<ns2:SentCounts xmlns:ns2="urn:us:gov:hhs:acf:cseiwo"></ns2:SentCounts>
<ns1:DocumentCode></ns1:DocumentCode>
</ns1:DocumentFileTrailer>
</ns1:EIWORoot>
我的XSL代码:
<xsl:stylesheet version="1.0" xmlns:ns1="urn:us:gov:hhs:acf:eiwo" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<eiwo:EIWORoot>
<eiwo:DocumentFileHeader>
<cseiwo:ControlNumber>
<xsl:value-of select="/ns1:EIWORoot/ns1:DocumentFileHeader/ns2:ControlNumber"/>
</cseiwo:ControlNumber>
<cseiwo:EINText>
<xsl:value-of select="/ns1:EIWORoot/ns1:DocumentFileHeader/ns2:EINText"/>
</cseiwo:EINText>
<cseiwo:CreationDate>
<xsl:value-of select="/ns1:EIWORoot/ns1:DocumentFileHeader/ns2:CreationDate"/>
</cseiwo:CreationDate>
<cseiwo:CreationTime>
<xsl:value-of select="/ns1:EIWORoot/ns1:DocumentFileHeader/ns2:CreationTime"/>
</cseiwo:CreationTime>
<xsl:for-each select="/ns1:EIWORoot/ns1:DocumentFileHeader/ns1:DocumentCode">
<eiwo:DocumentCode>
<xsl:value-of select="."/>
</eiwo:DocumentCode>
</xsl:for-each>
</eiwo:DocumentFileHeader>
<eiwo:EIWOBatch>
<eiwo:DocumentBatchHeader>
<cseiwo:ControlNumber>
<xsl:value-of select="/ns1:EIWORoot/ns1:EIWOBatch/ns1:DocumentBatchHeader/ns2:ControlNumber"/>
</cseiwo:ControlNumber>
<cseiwo:StateTribeTerritoryCode>
<xsl:value-of select="/ns1:EIWORoot/ns1:EIWOBatch/ns1:DocumentBatchHeader/ns2:StateTribeTerritoryCode"/>
</cseiwo:StateTribeTerritoryCode>
<cseiwo:EINText>
<xsl:value-of select="/ns1:EIWORoot/ns1:EIWOBatch/ns1:DocumentBatchHeader/ns2:EINText"/>
</cseiwo:EINText>
<cseiwo:CreationDate>
<xsl:value-of select="/ns1:EIWORoot/ns1:EIWOBatch/ns1:DocumentBatchHeader/ns2:CreationDate"/>
</cseiwo:CreationDate>
<cseiwo:CreationTime>
<xsl:value-of select="/ns1:EIWORoot/ns1:EIWOBatch/ns1:DocumentBatchHeader/ns2:CreationTime"/>
</cseiwo:CreationTime>
<xsl:for-each select="/ns1:EIWORoot/ns1:EIWOBatch/ns1:DocumentBatchHeader/ns1:DocumentCode">
<eiwo:DocumentCode>
<xsl:value-of select="."/>
</eiwo:DocumentCode>
</xsl:for-each>
</eiwo:DocumentBatchHeader>
<xsl:for-each select="/ns1:EIWORoot/ns1:EIWOBatch/ns1:EIWO">
<eiwo:EIWO>
<eiwo:IdentifyingInfo>
<eiwo:DocumentDate>
<xsl:value-of select="./ns1:IdentifyingInfo/ns1:DocumentDate"/>
</eiwo:DocumentDate>
<eiwo:DocumentActionCode>
<xsl:value-of select="./ns1:IdentifyingInfo/ns1:DocumentActionCode"/>
</eiwo:DocumentActionCode>
<eiwo:CaseIdentifier>
<xsl:value-of select="./ns1:IdentifyingInfo/ns1:CaseIdentifier"/>
</eiwo:CaseIdentifier>
<eiwo:OrderIdentifier>
<xsl:value-of select="./ns1:IdentifyingInfo/ns1:OrderIdentifier"/>
</eiwo:OrderIdentifier>
<eiwo:DocumentTrackingNumber>
<xsl:value-of select="./ns1:IdentifyingInfo/ns1:DocumentTrackingNumber"/>
</eiwo:DocumentTrackingNumber>
</eiwo:IdentifyingInfo>
<eiwo:Person>
<eiwo:Employee>
<eiwo:PersonName>
<cseiwo:LastName>
<xsl:value-of select="''"/>
</cseiwo:LastName>
<cseiwo:FirstName>
<xsl:value-of select="''"/>
</cseiwo:FirstName>
</eiwo:PersonName>
<eiwo:PersonSSN>
<xsl:value-of select="./ns1:Person/ns1:Employee/ns1:PersonSSN"/>
</eiwo:PersonSSN>
</eiwo:Employee>
</eiwo:Person>
</eiwo:EIWO>
</xsl:for-each>
<eiwo:DocumentBatchTrailer>
<cseiwo:ControlNumber>
<xsl:value-of select="''"/>
</cseiwo:ControlNumber>
<cseiwo:SentCounts>
<xsl:value-of select="''"/>
</cseiwo:SentCounts>
<xsl:for-each select=".">
<eiwo:DocumentCode>
<xsl:value-of select="''"/>
</eiwo:DocumentCode>
</xsl:for-each>
</eiwo:DocumentBatchTrailer>
</eiwo:EIWOBatch>
<eiwo:DocumentFileTrailer>
<cseiwo:ControlNumber>
<xsl:value-of select="/ns1:EIWORoot/ns1:DocumentFileTrailer/ns2:ControlNumber"/>
</cseiwo:ControlNumber>
<cseiwo:SentCounts>
<xsl:value-of select="/ns1:EIWORoot/ns1:DocumentFileTrailer/ns2:SentCounts"/>
</cseiwo:SentCounts>
<xsl:for-each select="/ns1:EIWORoot/ns1:DocumentFileTrailer/ns1:DocumentCode">
<eiwo:DocumentCode>
<xsl:value-of select="."/>
</eiwo:DocumentCode>
</xsl:for-each>
</eiwo:DocumentFileTrailer>
</eiwo:EIWORoot>
</xsl:template>
</xsl:stylesheet>
预期输出:
<eiwo:EIWORoot xmlns:eiwo="urn:us:gov:hhs:acf:eiwo" xmlns:cseiwo="urn:us:gov:hhs:acf:cseiwo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:us:gov:hhs:acf:eiwo eIWO.xsd ">
<eiwo:DocumentFileHeader>
<cseiwo:ControlNumber></cseiwo:ControlNumber>
<cseiwo:EINText></cseiwo:EINText>
<cseiwo:CreationDate></cseiwo:CreationDate>
<cseiwo:CreationTime></cseiwo:CreationTime>
<eiwo:DocumentCode></eiwo:DocumentCode>
</eiwo:DocumentFileHeader>
<eiwo:EIWOBatch>
<eiwo:DocumentBatchHeader>
<cseiwo:ControlNumber></cseiwo:ControlNumber>
<cseiwo:StateTribeTerritoryCode></cseiwo:StateTribeTerritoryCode>
<cseiwo:EINText></cseiwo:EINText>
<cseiwo:CreationDate></cseiwo:CreationDate>
<cseiwo:CreationTime></cseiwo:CreationTime>
<eiwo:DocumentCode></eiwo:DocumentCode>
</eiwo:DocumentBatchHeader>
<eiwo:EIWO>
<eiwo:IdentifyingInfo>
<eiwo:DocumentDate></eiwo:DocumentDate>
<eiwo:DocumentActionCode></eiwo:DocumentActionCode>
<eiwo:CaseIdentifier></eiwo:CaseIdentifier>
<eiwo:OrderIdentifier></eiwo:OrderIdentifier>
<eiwo:DocumentTrackingNumber></eiwo:DocumentTrackingNumber>
</eiwo:IdentifyingInfo>
<eiwo:Person>
<eiwo:Employee>
<eiwo:PersonName>
<cseiwo:LastName></cseiwo:LastName>
<cseiwo:FirstName></cseiwo:FirstName>
</eiwo:PersonName>
<eiwo:PersonSSN></eiwo:PersonSSN>
</eiwo:Employee>
</eiwo:Person>
</eiwo:EIWO>
<eiwo:DocumentBatchTrailer>
<cseiwo:ControlNumber></cseiwo:ControlNumber>
<cseiwo:SentCounts></cseiwo:SentCounts>
<eiwo:DocumentCode></eiwo:DocumentCode>
</eiwo:DocumentBatchTrailer>
</eiwo:EIWOBatch>
<eiwo:DocumentFileTrailer>
<cseiwo:ControlNumber></cseiwo:ControlNumber>
<cseiwo:SentCounts></cseiwo:SentCounts>
<eiwo:DocumentCode></eiwo:DocumentCode>
</eiwo:DocumentFileTrailer>
</eiwo:EIWORoot>
答:
1赞
y.arazim
4/10/2023
#1
我认为要获得预期的输出,您需要做的就是:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:eiwo="urn:us:gov:hhs:acf:eiwo"
xmlns:cseiwo="urn:us:gov:hhs:acf:cseiwo">
<xsl:template match="/eiwo:EIWORoot">
<eiwo:EIWORoot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:us:gov:hhs:acf:eiwo eIWO.xsd">
<xsl:apply-templates/>
</eiwo:EIWORoot>
</xsl:template>
<xsl:template match="eiwo:*">
<xsl:element name="eiwo:{local-name()}">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="cseiwo:*">
<xsl:element name="cseiwo:{local-name()}">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
但是我没有非常彻底地检查这一点,因为您的XML很长。
请注意,结果在语义上与输入相同。对于使用符合要求的解析器的目标应用程序,根本不需要执行此转换。
评论