xsl: совпадение шаблона для xml с префиксами - PullRequest
0 голосов
/ 27 октября 2009

У меня есть этот XML-файл

<?xml version="1.0" encoding="UTF-8"?>
<bo:C837ClaimParent xsi:type="bo:C837ClaimParent"     
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
xmlns:bo="http://somelongpathHere/process/bo">
<claimAux>
...
</claimAux>
<enterpriseClaim>
...
    <patientAccountNumber>data to capture here</patientAccountNumber>
</enterpriseClaim>

Мне нужно сопоставить данные внутри , который находится внутри , который находится внутри Я перепробовал все значения, которые могу придумать для соответствия xsl: template, и я не могу сопоставить этот узел, он либо не находит его, либо соответствует всему файлу xml, мой файл xsl выглядит следующим образом:

    <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="2.0" encoding="UTF-8" indent="yes"/>
    <xsl:template match="/">
    <html>
....
<div>
  <xsl:value-of select="C837ClaimParent/enterpriseClaim/patientAccountNumber" /></div>

что мне нужно указать в моем xsl: template и xsl: value-of?

также, для этого же файла я буду сопоставлять другие значения, все находится внутри главного узла

Ответы [ 2 ]

2 голосов
/ 27 октября 2009

Похоже, вам не хватает объявления пространства имен для вашего префикса bo. Это пространство имен, вероятно, должно появиться в вашем решении, если вы не используете local-name()

edit (после появления пространства имен!

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:bo="http://somelongpathHere/process/bo">
    <xsl:output method="xml" version="2.0" encoding="UTF-8" indent="yes"/>
    <xsl:template match="/">
    <html>
....
<div>
  <xsl:value-of select="bo:C837ClaimParent/enterpriseClaim/patientAccountNumber" /></div>

Вы уверены, что enterpriseClaim находится в другом пространстве имен, чем C837ClaimParent?

1 голос
/ 27 октября 2009
<xsl:stylesheet ... xmlns:bo="http://www.bo.org">
   ...
   <xsl:value-of select="/bo:C837ClaimParent/enterpriseClaim/patientAccountNumber" />
   ...
</xsl:stylesheet>

В общем, мой совет - прочитать о пространствах имен в XML и XPath.

...