当前位置: 首页 > 知识库问答 >
问题:

如何在正在显示的select元素的每个值后面放置分隔符[XSLT1.0]?

荀学文
2023-03-14

所以在匹配“attributeList”的最后一个模板中,我需要显示其中的内容,按分隔符“,”拆分。不幸的是,我尝试的一切都不奏效;令牌化,字符串函数,...自从im在1.0版上。分离器不工作。我需要帮助!

<Name>Hotel Lemax</Name>
<NumberOfStars>5</NumberOfStars>

<PhotoList>
    <Photo>
        <Url>http://demotest.itravelsoftware.com/fotografije_itravel/7/717_636077307841478526.jpg</Url>
    </Photo>
    <Photo>
        <Url>http://demotest.itravelsoftware.com/fotografije_itravel/7/715_636077306767263022.jpg</Url>
    </Photo>
    <Photo>
        <Url>http://demotest.itravelsoftware.com/fotografije_itravel/7/714_636077303419440444.jpg</Url>
    </Photo>
    <Photo>
        <Url>http://demotest.itravelsoftware.com/fotografije_itravel/7/539_636064349608545756.jpg</Url>
    </Photo>
</PhotoList>

<RoomList>
    <Room>
        <Name>Double room</Name>
        <Price>100 EUR</Price>
        <AttributeList>
            <Attribute>
                <Name>Deluxe</Name>
            </Attribute>
            <Attribute>
                <Name>Half board</Name>
            </Attribute>
        </AttributeList>
    </Room>
    <Room>
        <Name>Triple room</Name>
        <Price>200 EUR</Price>
        <AttributeList>
            <Attribute>
                <Name>Deluxe</Name>
            </Attribute>
            <Attribute>
                <Name>Full board</Name>
            </Attribute>
            <Attribute>
                <Name>Jacuzzi</Name>
            </Attribute>
        </AttributeList>
    </Room>
</RoomList>

`

XSLT:

<?xml version="1.0" encoding="utf-8"?>

<xsl:template match="/">

    <html>
        <head>
            <title>
                <xsl:value-of select="Hotel/Name"/>
            </title>
        </head>
        <body>
            <h1>
                <xsl:value-of select="Hotel/Name"/>
            </h1>

            <h2> Number of stars:
                <xsl:value-of select="Hotel/NumberOfStars"/>
            </h2>

            <div>
                First photo: <br/>
                <xsl:apply-templates select="//Photo[1]"/>
            </div>

            <div>
                Other photos: <br/>
                <xsl:call-template name="Lista"/>
                <xsl:call-template name="Lista"/>
                <xsl:call-template name="Lista"/>
            </div>

            <div>
            Rooms:
            <br/><br/>
            <xsl:apply-templates select="//Room"/>
            </div>
        </body>
    </html>

</xsl:template>



<xsl:template match="//Photo">
    <img src="{.}" style="width: 100px; height: 100px;"></img>
</xsl:template>

<xsl:template name="Lista">
    <xsl:value-of select="/PhotoList"/>
        <img src="{.}" style="width: 100px; height: 100px; padding: 0 20px;"></img>
</xsl:template>



<xsl:template match="//Room">  
    <xsl:apply-templates select="Name"/>
    <xsl:apply-templates select="Price"/>
    <xsl:apply-templates select="AttributeList"/>
</xsl:template> 

<xsl:template match="Name"> 
    <b>Name:</b> <b><xsl:value-of select="."/></b>  <br/><br/>
</xsl:template>

<xsl:template match="Price">
    Price:<xsl:value-of select="."/> 
    <br/> 
</xsl:template>

<xsl:template match="AttributeList">
Attributes:
    <xsl:for-each select=".">
        <xsl:value-of select="."/> 
            
    </xsl:for-each>
    <br/><br/> 
</xsl:template>

我想要的输出是:

属性:豪华、半板...属性:豪华、全板、按摩浴缸

共有1个答案

闾丘昊然
2023-03-14

请尝试更改以下内容:

<xsl:template match="AttributeList">
Attributes:
    <xsl:for-each select=".">
        <xsl:value-of select="."/> 
            
    </xsl:for-each>
    <br/><br/> 
</xsl:template>

致:

<xsl:template match="AttributeList">
Attributes:
    <xsl:for-each select="Attribute">
        <xsl:value-of select="Name"/> 
        <xsl:if test="position()!=last()">, </xsl:if>
    </xsl:for-each>
    <br/><br/> 
</xsl:template>
 类似资料:
  • 问题是在表/节的最后一个单元格中显示分隔符的最正确方式是什么。 基本上这就是我所追求的。 我知道你可以不使用实际的分隔符,而是在单元格底部添加一条像素线。但我不喜欢这种方法,因为 选中/高亮显示某个单元格时,其分隔符和上一个单元格的分隔符将自动隐藏(请参见第二个屏幕截图,其中选择了“You't to be crazy”)。如果我使用一条像素线,这是我希望UITableView处理的事情,而不是我自

  • 我在做一个计算器应用程序,我用十进制格式来格式化我的数字。我的问题是我想让它显示像0,003这样的数字。但是逗号后面的2零直到我输入3才显示出来。请帮我修复这里的代码 添加“0”的代码

  • 我在我的列表视图中添加了一个可绘制的分隔线,但它出现在除最后一项之外的所有项目中。 我在列表中只有5个项目,所以在最后一个项目之后都是空白,我想在最后一项之后也有一个分隔符 我试过这个: 在我的列表视图中。但它不起作用 非常感谢。

  • 我正在使用Swagger为Apache CXF RESTful API生成文档。我有 xsd 并且 DTO 是使用 xjc 插件从 xsd 生成的。我希望 swagger 在 swagger 的响应类 - 模型部分下显示 xsd 中每个元素的文档。 我无法控制生成的DTO,因为它是跨多个项目共享的。我不能像某些示例中建议的那样使用swagger注释来注释DTO对象。

  • 给定的配置单元查询。 生成下表:

  • 问题内容: 我需要一个动态元素始终出现在另一个元素的顶部,无论它们在DOM树中的顺序如何。这可能吗?我已经尝试了(和),但似乎没有用。 我需要: 呈现时完全相同。并且出于灵活性目的(我计划分发需要此功能的插件),我真的不想不必求助于绝对或固定位置。 为了执行我想要的功能,我做了一个条件语句,其中重叠的子元素将在阻止其父视图的情况下变得透明。这不是完美的,但它是某种东西。 问题答案: 如果元素构成层