l'espace de noms d'erreur : préfixe d'espace de Noms de la bd sur le mot-clé n'est pas défini

J'ai un énorme fichier xml que je voudrais diviser dans des documents xml; chaque fichier xml est censé avoir explicite d'une déclaration d'espace de noms le cas échéant, comme indiqué sur la "Sortie" dans la section ci-dessous. Cependant, je reçois le message d'erreur "erreur espace de noms : préfixe d'espace de Noms de la bd sur le mot-clé n'est pas défini"

Ma question est, comment puis-je indiquer explicitement mon processeur XSLT où placer déclaration d'espace de noms dans le résultat? Je suis passé par un couple de tutoriels en ligne, mais je n'arrive pas à comprendre comment régler cette question.

Partielle XSLT Extrait de

...
...
<xsl:template match="chapter">
  <bd:chapter>
    <xsl:apply-templates select="name" />
    <xsl:apply-templates select="page" />
  </bd:chapter>
</xsl:template>

<xsl:template match="name">
  <bd:name>
    <xsl:value-of select="." />
  </bd:name>
</xsl:template>
...
...

De Sortie Désiré

<?xml version="1.0" encoding="utf-8" ?>
<books>
<bd:book xmlns:bd="http://www.bd.org.za/db" xmlns:cd="http://www.bd.org.za/cd">
    <bd:name>book01</bd:name>
    <bd:chapter>
      <cd:name>chapter01<cd:name>
      <bd:page>
    <cd:title></cd:title>
    <pd:description></pd:description>
      </bd:page>
    </bd:chapter>
</bd:book>
...
...
...
</books>

Mise à jour #1

<?xml version="1.0" encoding="utf-8" ?>
<books>
<book>
    <name>book01</name>
    <chapter>
      <name>chapter01<name>
      <page>
    <title></title>
    <description></description>
      </page>
    </chapter>
</book>
...
...
...
</books>

Mise à jour #2

@les polishchuk Update2 donner le résultat suivant

<?xml version="1.0"?>
<root xmlns:pd="namespace2">
  <pd:Book xmlns:pd="http://namespace1.org/">
    <pd_1:Name xmlns:pd="namespace2" xmlns:pd_1="http://namespace1.org/">A</pd_1:Name>
    <pd:Description xmlns:pd="namespace2">A1</pd:Description>
  </pd:Book>
  <pd:Book xmlns:pd="http://namespace1.org/">
    <pd_1:Name xmlns:pd="namespace2" xmlns:pd_1="http://namespace1.org/">B</pd_1:Name>
    <pd:Description xmlns:pd="namespace2">B1</pd:Description>
  </pd:Book>
</root>

Le seul rythme, je voudrais que les espaces de noms apparaissent dans le livre de nœud. Veuillez voir ci-dessous

<?xml version="1.0"?>
<root>
  <pd:Book xmlns:pd="http://namespace1.org/">
    <pd:Name >A</pd:Name>
    <pd:Description>A1</pd:Description>
  </pd:Book>
  <pd:Book xmlns:pd="http://namespace1.org/">
    <pd:Name>B</pd_1:Name>
    <pd:Description>B1</pd:Description>
  </pd:Book>
</root>
Fournir XML d'entrée.
Je vous remercie pour votre réponse. XML d'entrée est lié à un trop grand nombre de noeuds... pour l'instant, cependant, on pourrait supposer que nous sommes code de traitement en vertu de mise à Jour #1 ci-dessus. J'ai seulement besoin de conseils sur la façon d'aller à ce sujet explicitement notamment les espaces de noms d'éléments.
Il n'y a pas de différence pour moteur XML où l'espace est défini. Vous pouvez définir l'espace de noms dans le nœud racine <root xmlns:pd="namespace2"> ou dans le livre nœud <pd:Book xmlns:pd="namespace2">. Les deux sont égaux pour parser XML.

OriginalL'auteur lightonphiri | 2011-07-23