English 中文(简体)
XSLT 空白×mlns=”
原标题:XSLT blank xmlns="" after transform

I m 采用XSLT,将XML标准改为另一个标准。 由此得出的特殊标准包含一个根本要素,它属于另一个名词的“名称空间”和“儿童节点”。

改革成功反映了这些名称空间,但儿童现在含有空白的xmlns属性。 我怎样才能防止这一<代码>xmlns=”?

XSLT Snippet:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>

  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="@* | node()">
    <xsl:apply-templates select="REQUEST_GROUP" />
  </xsl:template>

  <xsl:template match="REQUEST_GROUP">
    <ONCORE_ERECORD xmlns="http://test.com">
      <xsl:apply-templates select="REQUEST/PRIA_REQUEST/PACKAGE"/>
      <PAYMENT PaymentType="ACH" />
     <TRANSACTION_INFO _AgentKey="" _AgentPassword="" />
    </ONCORE_ERECORD>
 </xsl:template>

  <xsl:template match="PACKAGE">
    <DOCUMENT_RECORDATION xmlns="http://test2.org">
        <xsl:apply-templates select="PRIA_DOCUMENT"/>
    </DOCUMENT_RECORDATION>
  </xsl:template>

  <xsl:template match="PRIA_DOCUMENT">
    <PRIA_DOCUMENT _PRIAVersion="1.2">
      <xsl:attribute name="_Type">
        <xsl:value-of select="@RecordableDocumentType"/>
      </xsl:attribute>
      <xsl:attribute name="_Code"/>

  <xsl:apply-templates select="GRANTOR" />
  <xsl:apply-templates select="GRANTEE" />
  <xsl:choose>
    <xsl:when test="count(PROPERTY) = 0">
      <PROPERTY>
        <xsl:attribute name="_StreetAddress">
          <xsl:value-of select="@StreetAddress"/>
        </xsl:attribute>
        <xsl:attribute name="_StreetAddress2">
          <xsl:value-of select="@StreetAddress2"/>
        </xsl:attribute>
        <xsl:attribute name="_City">
          <xsl:value-of select="@City"/>
        </xsl:attribute>
        <xsl:attribute name="_State">
          <xsl:value-of select="@State"/>
        </xsl:attribute>
        <xsl:attribute name="_PostalCode">
          <xsl:value-of select="@PostalCode"/>
        </xsl:attribute>
        <xsl:attribute name="_County">
          <xsl:value-of select="@County"/>
        </xsl:attribute>
        <xsl:apply-templates select="LEGAL_DESCRIPTION"/>
      </PROPERTY>
    </xsl:when>
    <xsl:otherwise>
      <xsl:apply-templates select="PROPERTY" />
    </xsl:otherwise>
  </xsl:choose>
  <xsl:choose>
    <xsl:when test="count(PARTIES) = 0">
      <PARTIES>
        <_RETURN_TO_PARTY _UnparsedName="" _StreetAddress="" _StreetAddress2="" _City="" _State="" _PostalCode="" />
      </PARTIES>
    </xsl:when>
    <xsl:otherwise>
      <xsl:apply-templates select="PARTIES" />
    </xsl:otherwise>
  </xsl:choose>
  <xsl:apply-templates select="EXECUTION" />
  <xsl:apply-templates select="CONSIDERATION" />
  <xsl:apply-templates select="RECORDABLE_DOCUMENT/_ASSOCIATED_DOCUMENT" />
  <xsl:apply-templates select="EMBEDDED_FILE" />
</PRIA_DOCUMENT>

资料来源:XML。

<REQUEST_GROUP PRIAVersionIdentifier="2.4">
  <REQUEST>
    <PRIA_REQUEST _Type="RecordDocuments">
      <PACKAGE>
        <PRIA_DOCUMENT PRIAVersionIdentifier="2.4" RecordableDocumentSequenceIdentifier="1" RecordableDocumentType="Mortgage">

结果是:

<?xml version="1.0" encoding="utf-8"?>
<ONCORE_ERECORD xmlns="http://test.com">
  <DOCUMENT_RECORDATION xmlns="http://test2.org">
    <PRIA_DOCUMENT _PRIAVersion="1.2" _Type="Mortgage" _Code="" xmlns="">
最佳回答

我找到的解决办法是行之有效的,尽管可能不是取得预期成果的最有效途径。

我简单地把所有字面要素声明改为:

</xsl:element>

并宣布名称空间。 由此形成的轴线如下:

<xsl:template match="REQUEST_GROUP">
<xsl:element name="ONCORE_ERECORD" namespace="http://test.com">
  <xsl:apply-templates select="REQUEST/PRIA_REQUEST/PACKAGE"/>
  <xsl:element name="PAYMENT" namespace="http://test.com">
    <xsl:attribute name="PaymentType">
      <xsl:value-of select=" ACH "/>
    </xsl:attribute>
  </xsl:element>
  <xsl:element name="TRANSACTION_INFO" namespace="http://test.com">
    <xsl:attribute name="_AgentKey">
      <xsl:value-of select="  "/>
    </xsl:attribute>
    <xsl:attribute name="_AgentPassword">
      <xsl:value-of select="  "/>
    </xsl:attribute>
  </xsl:element>
</xsl:element>
  </xsl:template>

  <xsl:template match="PACKAGE">
<xsl:element name="DOCUMENT_RECORDATION" namespace="http://test2.org">
  <xsl:apply-templates select="PRIA_DOCUMENT"/>
</xsl:element>
  </xsl:template>

  <xsl:template match="PRIA_DOCUMENT">
<xsl:element name="PRIA_DOCUMENT" namespace="http://test2.org">
  <xsl:attribute name="_PRIAVersion">
    <xsl:value-of select=" 1.2 "/>
  </xsl:attribute>
  <xsl:attribute name="_Type">
    <xsl:value-of select="@RecordableDocumentType"/>
  </xsl:attribute>
  <xsl:attribute name="_Code"/>

  <xsl:apply-templates select="GRANTOR" />
  <xsl:apply-templates select="GRANTEE" />
  <xsl:choose>
    <xsl:when test="count(PROPERTY) = 0">
        <xsl:element name="PROPERTY" namespace="http://test2.org">
          <xsl:attribute name="_StreetAddress">
            <xsl:value-of select="@StreetAddress"/>
          </xsl:attribute>
          <xsl:attribute name="_StreetAddress2">
            <xsl:value-of select="@StreetAddress2"/>
          </xsl:attribute>
          <xsl:attribute name="_City">
            <xsl:value-of select="@City"/>
          </xsl:attribute>
          <xsl:attribute name="_State">
            <xsl:value-of select="@State"/>
          </xsl:attribute>
          <xsl:attribute name="_PostalCode">
            <xsl:value-of select="@PostalCode"/>
          </xsl:attribute>
          <xsl:attribute name="_County">
            <xsl:value-of select="@County"/>
          </xsl:attribute>
          <xsl:apply-templates select="LEGAL_DESCRIPTION"/>
        </xsl:element>
    </xsl:when>
    <xsl:otherwise>
      <xsl:apply-templates select="PROPERTY" />
    </xsl:otherwise>
  </xsl:choose>
  <xsl:choose>
    <xsl:when test="count(PARTIES) = 0">
      <xsl:element name="PARTIES" namespace="http://test2.org">
        <xsl:element name="_RETURN_TO_PARTY" namespace="http://test2.org">
          <xsl:attribute name="_UnparseName">
            <xsl:value-of select="  "/>
          </xsl:attribute>
          <xsl:attribute name="_StreetAddress">
            <xsl:value-of select="  "/>
          </xsl:attribute>
          <xsl:attribute name="_StreetAddress2">
            <xsl:value-of select="  "/>
          </xsl:attribute>
          <xsl:attribute name="_City">
            <xsl:value-of select="  "/>
          </xsl:attribute>
          <xsl:attribute name="_State">
            <xsl:value-of select="  "/>
          </xsl:attribute>
          <xsl:attribute name="_PostalCode">
            <xsl:value-of select="  "/>
          </xsl:attribute>
        </xsl:element>
      </xsl:element>
    </xsl:when>
    <xsl:otherwise>
      <xsl:apply-templates select="PARTIES" />
    </xsl:otherwise>
  </xsl:choose>
  <xsl:apply-templates select="EXECUTION" />
  <xsl:apply-templates select="CONSIDERATION" />
  <xsl:apply-templates select="RECORDABLE_DOCUMENT/_ASSOCIATED_DOCUMENT" />
  <xsl:apply-templates select="EMBEDDED_FILE" />
    </xsl:element>
  </xsl:template> 
问题回答

这是因为PRIA_DOCUMENT 位于缺省名称空间,而其上级指定代表机构则位于非致命名称空间。 您必须将PRIA_DOCUMENT放在与母体相同的名称空间,否则,序列器必须生成<代码>xmlns=”<>>。

  .
  .
<xsl:template match="PRIA_DOCUMENT">
  <PRIA_DOCUMENT _PRIAVersion="1.2" xmlns="http://pria.org">
  .
  .
  .

See Michael Kay s “XSLT 2.0 and XPATH 2.0, 4th edition”, page 475 where he Discussiones this original situation.

我也有一个类似的问题,甚至宣布了有关儿童内容的国名空间,但最终还在结束。

xmlns=""

我认为,这是由xslt转变造成的,但变革的明显结果是正确的,当时我把扼杀变成了org.w3c.dom。 正在增加缺省名称空间的文件。

B. 编制文件 工厂名称空间认识到这一点

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
DocumentBuilder db = dbf.newDocumentBuilder();
Document metadataDOM = db.parse(new ByteArrayInputStream(stringWriter.toString().getBytes()));

在同一个名称空间使用电话模板和应用模板。

您重新界定了缺省名称空间,其中每一点都标有Xmlns=声明。 由于<代号>PRIA_DOCUMENT没有名称空间,因此产出需要将其宣布为空洞,或与母体相同的名称空间。 d 我建议在名称空间添加定义内容的内容,例如:

<pria:DOCUMENT_RECORDATION xmlns:pria=“http://pria.org”>

以及

<as:ONCORE_ERECORD xmlns:as=http://aptitudesolutions.com”>

With these named namespaces in place, the blank declaration on the PRIA_DOCUMENT element becomes unnecessary, 以及 is not added.





相关问题
When test hanging in an infinite loop

I m tokenising a string with XSLT 1.0 and trying to prevent empty strings from being recognised as tokens. Here s the entire function, based on XSLT Cookbook: <xsl:template name="tokenize"> ...

quick xslt for-each question

Let s say I have an XML document that has this: <keywords> <keyword>test</keyword> <keyword>test2</keyword> <keyword>test3</keyword> <keyword>test4</...

XSLT Transform XML with Namespaces

I m trying to transform some XML into HTML using XSLT. Problem: I can t get it to work. Can someone tell me what I m doing wrong? XML: <ArrayOfBrokerage xmlns:i="http://www.w3.org/2001/...

XSLT output to HTML

In my XSLT file, I have the following: <input type="button" value= <xsl:value-of select="name">> It s an error as it violates XML rule. What I actually want is having a value from an ...

Mangling IDs and References to IDs in XML

I m trying to compose xml elements into each other, and the problem I am having is when there s the same IDs. Basically what I need to do is mangle all the IDs in an xml file, as well as the ...

Sharepoint 2007 Data view Webpart custom parameters

I m sort of new to the custom parameters that can be setup on a DataView Webpart. There are 6 options: - None - Control - Cookie - Form - QueryString - Server Variable I think that None, Cookie and ...

热门标签