简体   繁体   English

XSL样式表以复制属性,但添加SchemaLocation

[英]XSL Stylesheet to Copy Attributes but add SchemaLocation

I am creating an XML file, which the schema attributes are being passed, however I would like to add the xsi:schemaLocation using a XSL Stylesheet. 我正在创建一个XML文件,该文件正在传递架构属性,但是我想使用XSL样式表添加xsi:schemaLocation。 How do I add the copy over the file and it's attributes, but add the schemaLocation? 如何在文件及其属性上添加副本,但如何添加schemaLocation? Example code from the XML file and Stylesheet below. 下面的XML文件和样式表中的示例代码。

I am fairly new to XSL. 我对XSL相当陌生。 Any help is appreciated. 任何帮助表示赞赏。

<?xml version="1.0" encoding="utf-8"?>

<PLZ:Polizas xmlns:PLZ="www.sat.gob.mx/esquemas/ContabilidadE/1_1/PolizasPeriodo" Version="1.1" RFC="AAA7803012R2" Mes="05" Anio="2015" TipoSolicitud="AF" NumOrden="BBB6666666/66">
<PLZ:Poliza NumUnIdenPol="1111111111" Fecha="2015-05-01" Concepto="No Desc"><PLZ:Transaccion NumCta="0009950001" DesCta="Clients" Concepto="No Desc" Debe="45.0" Haber="0.0" /><PLZ:Transaccion NumCta="9873027100" DesCta="Sale boxes" Concepto="No desc" Debe="0.0" Haber="45.0" /><PLZ:Transaccion NumCta="7774195087" DesCta="IVA 11%" Concepto="No Desc" Debe="0.0" Haber="4.95" /></PLZ:Poliza>
<PLZ:Poliza NumUnIdenPol="2222222222" Fecha="2015-05-02" Concepto="Payment 1"><PLZ:Transaccion NumCta="0009910001" DesCta="Box" Concepto="Payment 1 Ef" Debe="4.95" Haber="0.0" /><PLZ:Transaccion NumCta="0001055555" DesCta="Clients" Concepto="Payment RR Ef" Debe="0.0" Haber="4.95" /></PLZ:Poliza>
<PLZ:Poliza NumUnIdenPol="3333333333" Fecha="2015-05-03" Concepto="Payment 2"><PLZ:Transaccion NumCta="0009910002" DesCta="Box" Concepto="Payment 2 Ef" Debe="45.0" Haber="0.0"><PLZ:CompNal UUID_CFDI="F011DDAA-05EA-11A4-9988-8AA11775B113" RFC="AAAA710101XX9" MontoTotal="45.0" /></PLZ:Transaccion><PLZ:Transaccion NumCta="9991040025" DesCta="Clients" Concepto="Payment X Ef" Debe="0.0" Haber="45.0"><PLZ:CompNal UUID_CFDI="F011DDAA-05EA-11A4-9988-8AA11775B113" RFC="AAAA710101XX9" MontoTotal="45.0" /></PLZ:Transaccion></PLZ:Poliza></PLZ:Polizas>



<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xsi:schemaLocation="www.sat.gob.mx/esquemas/ContabilidadE/1_1/PolizasPeriodo http://www.sat.gob.mx/esquemas/ContabilidadE/1_1/PolizasPeriodo/PolizasPeriodo_1_1.xsd" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <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:template match="text() | comment() | processing-instruction()">
    <xsl:copy />
</xsl:template>

</xsl:stylesheet>

Expected Results: 预期成绩:

<?xml version="1.0" encoding="utf-8"?>

<PLZ:Polizas xmlns:PLZ="www.sat.gob.mx/esquemas/ContabilidadE/1_1/PolizasPeriodo" Version="1.1" TipoSolicitud="AF" RFC="AAA7803012R2" NumOrden="BBB6666666/66" Mes="05" Anio="2015" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="www.sat.gob.mx/esquemas/ContabilidadE/1_1/PolizasPeriodo http://www.sat.gob.mx/esquemas/ContabilidadE/1_1/PolizasPeriodo/PolizasPeriodo_1_1.xsd">
<PLZ:Poliza NumUnIdenPol="1111111111" Fecha="2015-05-01" Concepto="No Desc"><PLZ:Transaccion NumCta="0009950001" DesCta="Clients" Concepto="No Desc" Debe="45.0" Haber="0.0" /><PLZ:Transaccion NumCta="9873027100" DesCta="Sale boxes" Concepto="No desc" Debe="0.0" Haber="45.0" /><PLZ:Transaccion NumCta="7774195087" DesCta="IVA 11%" Concepto="No Desc" Debe="0.0" Haber="4.95" /></PLZ:Poliza>
<PLZ:Poliza NumUnIdenPol="2222222222" Fecha="2015-05-02" Concepto="Payment 1"><PLZ:Transaccion NumCta="0009910001" DesCta="Box" Concepto="Payment 1 Ef" Debe="4.95" Haber="0.0" /><PLZ:Transaccion NumCta="0001055555" DesCta="Clients" Concepto="Payment RR Ef" Debe="0.0" Haber="4.95" /></PLZ:Poliza>
<PLZ:Poliza NumUnIdenPol="3333333333" Fecha="2015-05-03" Concepto="Payment 2"><PLZ:Transaccion NumCta="0009910002" DesCta="Box" Concepto="Payment 2 Ef" Debe="45.0" Haber="0.0"><PLZ:CompNal UUID_CFDI="F011DDAA-05EA-11A4-9988-8AA11775B113" RFC="AAAA710101XX9" MontoTotal="45.0" /></PLZ:Transaccion><PLZ:Transaccion NumCta="9991040025" DesCta="Clients" Concepto="Payment X Ef" Debe="0.0" Haber="45.0"><PLZ:CompNal UUID_CFDI="F011DDAA-05EA-11A4-9988-8AA11775B113" RFC="AAAA710101XX9" MontoTotal="45.0" /></PLZ:Transaccion></PLZ:Poliza></PLZ:Polizas>

AFAICT, the expected result can be achieved very simply by: AFAICT可以通过以下方法非常简单地实现预期结果:

XSLT 1.0 XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<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:template match="/*">
    <xsl:copy>
        <xsl:attribute name="xsi:schemaLocation">www.sat.gob.mx/esquemas/ContabilidadE/1_1/PolizasPeriodo http://www.sat.gob.mx/esquemas/ContabilidadE/1_1/PolizasPeriodo/PolizasPeriodo_1_1.xsd</xsl:attribute>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM