XML到XSLT可以从XML打开数据

XML到XSLT可以从XML打开数据,xml,xslt,xsd,Xml,Xslt,Xsd,我有这两个文件 XML文件: <CadeiaHoteis> <Hoteis id="1"> <codigo>458</codigo> <morada>Porto</morada> <num_quartos>3</num_quartos> <piscina>Não</pis

我有这两个文件
XML文件:

    <CadeiaHoteis>
    <Hoteis id="1">
            <codigo>458</codigo> 
            <morada>Porto</morada>
            <num_quartos>3</num_quartos>
            <piscina>Não</piscina>
            <restaurante>
                <dados>Sim</dados>
                <num_mesas>10</num_mesas>
                <num_pessoas>3</num_pessoas>
                <hora_abertura>11:30</hora_abertura>
                <hora_fechar>23:00</hora_fechar>
            </restaurante>
            <num_funcionarios>8</num_funcionarios>
    </Hoteis>
    <Hoteis id="2">
     <codigo>381</codigo> 
            <morada>Lisboa</morada>
            <num_quartos>25</num_quartos>
            <piscina>Sim</piscina>
            <restaurante> 
                <dados></dados>
                <num_mesas></num_mesas>
                <num_pessoas></num_pessoas>
                <hora_abertura></hora_abertura>
                <hora_fechar></hora_fechar>
            </restaurante>
            <num_funcionarios>6</num_funcionarios>
    </Hoteis>

458
波尔图
3.
Não
模拟
10
3.
11:30
23:00
8.
381
葡京
25
模拟
6.
XSLT文件:

   <xsl:template match="ns:Hoteis_">
        <xsl:variable name="Hoteis/id" select="@id_hotel"/>
        <xsl:for-each select="//Hoteis/restaurante">
            <xsl:if test="dados != ' '">
                <tr>
                    <td align="center"> 
                        <xsl:value-of select= "ns:num_mesas" />
                    </td>
                    <td align="center"> 
                        <xsl:value-of select= "ns:num_pessoas" />
                    </td>
                    <td align="center"> 
                        <xsl:value-of select= "ns:hora_abertura" />
                    </td>
                    <td align="center"> 
                        <xsl:value-of select= "ns:hora_fechar" />
                    </td>
                </tr>
            </xsl:if>
            <xsl:if test="not(string(dados))">
                <tr>
                    <td>DONT EXIT RESTAURANT <xsl:value-of select= "@id_hotel" />  </td>
                </tr>
            </xsl:if>

        </xsl:for-each>

    </xsl:template>

不要离开餐厅

如果dados不是空的,只是没有显示,那么我想要餐厅数据,有人知道我如何显示数据吗???

由于源元素是不固定的,并且XSLT中有一些前缀元素选择器,我假设所有元素都属于同一名称空间(我称之为
您的名称空间
)您的源代码实际上是这样开始的:

<CadeiaHoteis xmlns="your-namespace">
    <Hoteis id="1">
    ...
应用于输入数据(如上所述添加namespace属性)将产生以下结果:

<?xml version="1.0" encoding="UTF-8"?>
<table xmlns:ns="your-namespace">
   <tr>
      <td align="center">10</td>
      <td align="center">3</td>
      <td align="center">11:30</td>
      <td align="center">23:00</td>
   </tr>
   <tr>
      <td>DONT EXIT RESTAURANT </td>
   </tr>
</table>

10
3.
11:30
23:00
不要离开餐厅
您可以测试和验证结果

<?xml version="1.0" encoding="UTF-8"?>
<table xmlns:ns="your-namespace">
   <tr>
      <td align="center">10</td>
      <td align="center">3</td>
      <td align="center">11:30</td>
      <td align="center">23:00</td>
   </tr>
   <tr>
      <td>DONT EXIT RESTAURANT </td>
   </tr>
</table>