2015-09-03 5 views
1

У меня есть фрагмент XML, который я сгенерировал через xquery, и я пытаюсь применить к нему таблицу стилей xsl. Я знаю, что таблица стилей работает с файлами xml, которые я использовал для построения запроса, но я не уверен, почему он не работает с моим сгенерированным xml:Нечеткое поведение с шаблонами xsl

У меня есть следующий фрагмент xml в одном из исходных документов :

<zone n="EETS.QD.4"> 
<line n="l.1"> 
    <orig><hi>O</hi> alle ye <gap quantity="8" unit="chars" reason="illegible" 
    />s of ierusaleem<note place="bottom" anchored="true" 
     xml:id="explanatory">The “l” in “ierusaleem” in the final word is 
     determined from context.</note></orig> 
</line> 

в XQUERY сгенерированный документ, это сочетается с линиями других документов, чтобы получить следующее:

<list xml:id="compare"> 
      <item> 
       <orig>London, British Library Harley 2251: <ref target=".html">O alle ye doughtres · of Jerusalem</ref> 
       </orig> 
      </item> 
      <item> 
       <orig>London, British Library Harley 2255: <ref target=".html"> 
        <hi rend="blue_pilcrow">¶</hi>O alle ye douħtren of <hi rend="underline">ierusaleem</hi> 
       </ref> 
       </orig> 
      </item> 
      <item> 
       <orig>Long Melford, Holy Trinity Church Clopton Chantry Chapel: <ref target=".html"> 
        <hi>O</hi> alle ye <gap quantity="8" unit="chars" reason="illegible"/>s of ierusaleem<note place="bottom" anchored="true" xml:id="explanatory">The “l” in “ierusaleem” in the final word is 
         determined from context.</note> 
       </ref> 
       </orig> 
      </item> 
      <item> 
       <orig>Cambridge, Jesus College Q.G.8: <ref target=".html"> 
        <hi>A</hi>ll the <hi rend="underline">doughtren </hi>of <hi rend="underline">Ierusalem</hi> .</ref> 
       </orig> 
      </item> 
      <item> 
       <orig>Oxford, Bodleian Library Laud 683: <ref target=".html">O alle ẏe douhtren of jerusaleem</ref> 
       </orig> 
      </item> 
     </list> 

в обоих случаях следующий шаблон применяется:

<xsl:template match="tei:orig/tei:gap"> 
    <xsl:text>[</xsl:text> 
    <xsl:variable name="max" select="@quantity"/> 
    <xsl:for-each select="1 to $max"> 
     <xsl:text>.</xsl:text> 
    </xsl:for-each> 
    <xsl:text>]</xsl:text> 
</xsl:template> 

В стандартном документе, он показывает, что я хочу правильно:

O alle ye [........]s of ierusaleem 

Но при нанесении на генерируемый документ, я получаю следующее:

O alle ye s of ierusaleem 

Очевидно, что это не поиск дочерних узлов, но я не уверен, почему, поскольку шаблон работает с тегом orig.

Вторая проблема заключается в том, что я не могу заставить элемент примечания подавить либо через xquery, либо xslt, но я подозреваю, что это связано с этой проблемой с пробелом. Любой совет будет оценен, спасибо!

+1

В создаваемом XQuery документе «gap» не является дочерним элементом 'orig'; это ребенок 'ref'. –

+0

Я не вижу никаких элементов 'gap' ... –

+0

Именно так. Я чувствую себя полным идиотом, чтобы не поймать это. Спасибо, Майкл! – medievalmatt

ответ

0

Примечание: ответ на этот вопрос не мой, и он был приведен в комментариях. Для полноты и ответа на вопрос, я добавляю его здесь, так как вопрос больше не удаляется.

Я не вижу никаких gap элементов ... ^

По Michael Kay и

В XQuery генерируемой документ, gap не ребенок orig; это ребенок ref. ^

по Daniel Haley как точки к тому же вопросу, в результате чего код ОР на провал. Другими словами, XPath ничего не выбрал, потому что путь к элементу был неправильным.

Смежные вопросы