Html XSLT-如何指定点文本在新行上的继续位置

Html XSLT-如何指定点文本在新行上的继续位置,html,xml,xslt,html-lists,newline,Html,Xml,Xslt,Html Lists,Newline,我使用XSLT将以下XML元素转换为HTML。我的XSLT处理器是Microsoft 1 当我从XML中调用一个元素以显示在XSLT中的标记中时,我希望能够指定单个文本内容到达某一点后在新行上继续显示的位置 我尝试将一个添加到我希望XML元素中出现中断的位置,但这只会导致一个新行旁边有一个我不希望出现的项目符号 最好的方法是什么 下面是我的代码示例: 正在调用到中的XML元素 在本例中,当我的XSLT通过;作为定界者 <research>Strategies and Approach

我使用XSLT将以下XML元素转换为HTML。我的XSLT处理器是Microsoft 1

当我从XML中调用一个元素以显示在XSLT中的
  • 标记中时,我希望能够指定单个
  • 文本内容到达某一点后在新行上继续显示的位置

    我尝试将一个


    添加到我希望XML元素中出现中断的位置,但这只会导致一个新行旁边有一个我不希望出现的项目符号

    最好的方法是什么

    下面是我的代码示例:

    正在调用到中的XML元素
  • 在本例中,当我的XSLT通过;作为定界者

    <research>Strategies and Approaches to Teaching and Learning Cross Cultures,  Office for Learning and Teaching,  
        LOL - Grant (pre-2013),  2008 - 2052, $90,000;  Parkour strategies and parallel jumps for spatial data monitoring and join processing,  
        Right Wing Politics,  JSA Early Career Artifact - Grant,  2004 - 20010,  $14,0000.
        </research>
    
    跨文化教学策略和方法,学习与教学办公室,
    LOL-赠款(2013年之前),2008-2052年,90000美元;用于空间数据监控和连接处理的跑酷策略和并行跳跃,
    右翼政治,JSA早期职业神器-格兰特,2004-2010,140000美元。
    
    浏览器似乎对



    的处理方式有所不同,尽管我从未见过浏览器添加新的要点。我认为

    可以满足您的需要。

    如果您可以并且希望在源XML文档中手动插入换行符,我建议您为此使用一些特殊字符串,而不是像

    这样的标记元素。然后可以调用另一个递归模板,用真正的HTML换行符替换特殊字符串的任何实例

    例如,使用
    §
    符号在以下输入XML中指示请求的换行符:

    <research>Strategies and Approaches to Teaching and Learning Cross Cultures,  Office for Learning and Teaching,  
    LOL - Grant (pre-2013),  2008 - 2052, §$90,000;  Parkour strategies and parallel jumps for spatial data monitoring and join processing,  
    Right Wing Politics,  JSA Early Career Artifact - Grant,  2004 - 20010,  $14,0000.
    </research>
    
    <ul>
      <li>Strategies and Approaches to Teaching and Learning Cross Cultures,  Office for Learning and Teaching,  
    LOL - Grant (pre-2013),  2008 - 2052, <br />$90,000</li>
      <li>  Parkour strategies and parallel jumps for spatial data monitoring and join processing,  
    Right Wing Politics,  JSA Early Career Artifact - Grant,  2004 - 20010,  <br />$14,0000.
    </li>
    </ul>
    
    跨文化教学策略和方法,学习与教学办公室,
    LOL-赠款(2013年之前),2008-2052,§$90000;用于空间数据监控和连接处理的跑酷策略和并行跳跃,
    右翼政治,JSA早期职业神器-格兰特,2004-2010,140000美元。
    
    然后,在调用XSLT之后:

    <ul>
        <xsl:call-template name="tokenize">
            <xsl:with-param name="text" select="research"/>
        </xsl:call-template>
    </ul>
    
    您需要将标记化模板从修改为:

    
    
  • 并添加替换模板:

    <xsl:template name="replace">
        <xsl:param name="text"/>
        <xsl:param name="search-string" select="'§'"/>
        <xsl:choose>
            <xsl:when test="contains($text, $search-string)">
                <xsl:value-of select="substring-before($text, $search-string)"/>
                <br/>
                <xsl:call-template name="replace">
                    <xsl:with-param name="text" select="substring-after($text, $search-string)"/>
                </xsl:call-template>
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="$text"/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
    
    
    

    这里有一个简短的解决方案,它不使用任何

    <xsl:stylesheet version="1.0"  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     <xsl:output omit-xml-declaration="yes" indent="yes"/>
    
     <xsl:template match="/">
        <ul>
          <xsl:apply-templates select="research"/>
        </ul>
     </xsl:template>
    
     <xsl:template match="research/text()[normalize-space()]" name="split">
         <xsl:param name="pText" select="."/>
         <xsl:if test="normalize-space($pText)">
           <li>
             <xsl:call-template name="replace">
               <xsl:with-param name="pText" select="substring-before(concat($pText, ';'), ';')"/>
             </xsl:call-template>
           </li>
           <xsl:call-template name="split">
             <xsl:with-param name="pText" select="substring-after($pText, ';')"/>
           </xsl:call-template>
         </xsl:if>
     </xsl:template>
    
     <xsl:template name="replace">
       <xsl:param name="pText"/>
       <xsl:if test="normalize-space($pText)">
           <xsl:value-of select="substring-before(concat($pText, '§'),'§')"/>
           <xsl:if test="contains($pText, '§')">
               <br/>
             <xsl:call-template name="replace">
               <xsl:with-param name="pText" select="substring-after($pText, '§')"/>
             </xsl:call-template>
           </xsl:if>
        </xsl:if> 
     </xsl:template>
    </xsl:stylesheet>
    
    
    

  • 当此转换应用于此源XML文档时(最初提供的转换带有插入的“;”用于行项目,而“§”用于换行):

    跨文化教学策略和方法,学习与教学办公室,
    LOL-赠款(2013年之前),2008-2052,§$90000;用于空间数据监控和连接处理的跑酷策略和并行跳跃,
    右翼政治,JSA早期职业人工制品-赠款,2004-20010,§$140000。
    
    生成所需的正确结果

    <research>Strategies and Approaches to Teaching and Learning Cross Cultures,  Office for Learning and Teaching,  
    LOL - Grant (pre-2013),  2008 - 2052, §$90,000;  Parkour strategies and parallel jumps for spatial data monitoring and join processing,  
    Right Wing Politics,  JSA Early Career Artifact - Grant,  2004 - 20010,  $14,0000.
    </research>
    
    <ul>
      <li>Strategies and Approaches to Teaching and Learning Cross Cultures,  Office for Learning and Teaching,  
    LOL - Grant (pre-2013),  2008 - 2052, <br />$90,000</li>
      <li>  Parkour strategies and parallel jumps for spatial data monitoring and join processing,  
    Right Wing Politics,  JSA Early Career Artifact - Grant,  2004 - 20010,  <br />$14,0000.
    </li>
    </ul>
    
    • 跨文化教学的策略和方法,学习与教学办公室, LOL-补助金(2013年之前),2008-2052,
      90000美元
    • 用于空间数据监控和连接处理的跑酷策略和并行跳跃, 右翼政治,JSA早期职业神器-格兰特,2004-2010,
      14万美元。
    浏览器会将其显示为

    <research>Strategies and Approaches to Teaching and Learning Cross Cultures,  Office for Learning and Teaching,  
    LOL - Grant (pre-2013),  2008 - 2052, §$90,000;  Parkour strategies and parallel jumps for spatial data monitoring and join processing,  
    Right Wing Politics,  JSA Early Career Artifact - Grant,  2004 - 20010,  $14,0000.
    </research>
    
    <ul>
      <li>Strategies and Approaches to Teaching and Learning Cross Cultures,  Office for Learning and Teaching,  
    LOL - Grant (pre-2013),  2008 - 2052, <br />$90,000</li>
      <li>  Parkour strategies and parallel jumps for spatial data monitoring and join processing,  
    Right Wing Politics,  JSA Early Career Artifact - Grant,  2004 - 20010,  <br />$14,0000.
    </li>
    </ul>
    
    • 跨文化教学的策略和方法,学习与教学办公室, LOL-补助金(2013年之前),2008-2052,
      90000美元
    • 用于空间数据监控和连接处理的跑酷策略和并行跳跃, 右翼政治,JSA早期职业神器-格兰特,2004-2010,
      14万美元。



    导致XSLT不再处理,
    本身仍然有要点。您能否提供输出的示例,以及您使用的浏览器呈现它?imgur.com/Tu4bFSh-在XML文档中,在$90000之前添加了输出的图片。–在最新的Internet Explorer中呈现无法从工作中访问imgur。我的意思是你生成的HTML的一个示例。啊,好的。我刚刚尝试获取一个HTML示例,当我试图查看XML文档的页面源代码时,IE和Firefox没有正确显示HTML。因此,我不知道如何才能提供给你。你的问题不清楚。特别是这一部分:“我希望能够指定一个单独的
  • 文本内容到达某个点后将在新行上继续的位置。”您想如何指定?在哪里?手动?在源XML文档本身中?没有回答我的问题。好的。我希望能够手动控制我在上面为每个
  • 演示的内容,无论是XML还是XSLT,只要提供最好的解决方案。这能更清楚地回答你的问题吗?