2014-10-23 3 views
0

У меня есть следующий код XML:Использование XPath для выбора узлов за пределами нормальной последовательности XSL: для-каждого

<?xml version="1.0" encoding="UTF-8"?> 
<Collection> 
    <Content> 
     <ID>12</ID> 
     <Type>Content</Type> 
     <Title>Office Location #1</Title> 
     <QuickLink>/office.aspx?id=12</QuickLink> 
     <Teaser> 
      <p> 
       <span class="infoBold">My Group</span> 
       <br /> 
       WPO 
       <br /> 
       Office Location #1 
       <br /> 
       Wp, NY 090801 
       <br /> 
       986.362.3265 
      </p> 
     </Teaser> 
     <Html> 
      <root> 
       <Location> 
        <location /> 
        <office>WPO</office> 
        <Address> 
         <image> 
          <img src="someing.png" /> 
         </image> 
         <Address1>Office Location #1</Address1> 
         <Address2 /> 
         <City>Wp</City> 
         <State>NY</State> 
         <zip>09081</zip> 
         <phone>986.362.3265</phone> 
         <fax /> 
         <urgent_care_phone /> 
        </Address> 
       </Location> 
      </root> 
     </Html> 
    </Content> 
    <Content> 
     <ID>48</ID> 
     <Type>Content</Type> 
     <Title>Office Location #3</Title> 
     <QuickLink>/office.aspx?id=48</QuickLink> 
     <Teaser> 
      <p> 
       <span class="infoBold">My Group</span> 
       <br /> 
       WPO 
       <br /> 
       Office Location #3 
       <br /> 
       Wp, NY 090801 
       <br /> 
       986.362.3265 
      </p> 
     </Teaser> 
     <Html> 
      <root> 
       <Location> 
        <location /> 
        <office>WPO</office> 
        <Address> 
         <image> 
          <img src="someing.png" /> 
         </image> 
         <Address1>Office Location #3</Address1> 
         <Address2 /> 
         <City>Wp</City> 
         <State>NY</State> 
         <zip>09081</zip> 
         <phone>986.362.3265</phone> 
         <fax /> 
         <urgent_care_phone /> 
        </Address> 
       </Location> 
      </root> 
     </Html> 
    </Content> 
    <Content> 
     <ID>36</ID> 
     <Type>Content</Type> 
     <Title>Office Location #2</Title> 
     <QuickLink>/office.aspx?id=36</QuickLink> 
     <Teaser> 
      <p> 
       <span class="infoBold">My Group</span> 
       <br /> 
       WPO 
       <br /> 
       Office Location #2 
       <br /> 
       Wp, NY 090801 
       <br /> 
       986.362.3265 
      </p> 
     </Teaser> 
     <Html> 
      <root> 
       <Location> 
        <location>WP</location> 
        <office>WPO</office> 
        <Address> 
         <image> 
          <img src="someing.png" /> 
         </image> 
         <Address1>Office Location #2</Address1> 
         <Address2 /> 
         <City>Wp</City> 
         <State>NY</State> 
         <zip>09081</zip> 
         <phone>986.362.3265</phone> 
         <fax /> 
         <urgent_care_phone /> 
        </Address> 
       </Location> 
      </root> 
     </Html> 
    </Content> 
</Collection> 

Я хочу, чтобы отобразить следующий формат:

FOR EACH ENTRY inside `Collection/Content/`: 

    Html/root/Location/location (if not blank show it) 
    Html/root/Location/Address { 
     /Address1 
     /Address2 (if not blank show it) 
     /City 
     /State 
     /zip 
     /phone 
     /fax (if not blank show it) 
    } 

    Html/root/Location/location (if not blank show it) 
    Html/root/Location/Address { 
     /Address1 
     /Address2 (if not blank show it) 
     /City 
     /State 
     /zip 
     /phone 
     /fax (if not blank show it) 
    } 

    Html/root/Location/location (if not blank show it) 
    Html/root/Location/Address { 
     /Address1 
     /Address2 (if not blank show it) 
     /City 
     /State 
     /zip 
     /phone 
     /fax (if not blank show it) 
    } 

Я пытаясь получить QuickLink

<xsl:for-each select="Collection/Content/Html"> 
    <div class="serviceHolder brClear"> 
     <xsl:value-of select="root/Location/Address/Address1" /> 
     <xsl:value-of select="root/Location/Address/Address2" /> 
     <xsl:value-of select="root/Location/Address/City" /> 
     <xsl:value-of select="root/Location/Address/State" /> 
     <xsl:value-of select="root/Location/Address/zip" /> 
     <xsl:value-of select="root/Location/Address/phone" /> 
     <a href="{QuickLink}" title="Test">Get Direction</a> 
    </div> 
</xsl:for-each> 

Хотя я использую Collection/Content/Html в наличии для каждого, как я возвращаюсь к Collection/Content/QuickLink для ссылки якорь здесь:

<a href="{QuickLink}" title="Test">Get Direction</a> 
+2

Если вы хотите получить полезные ответы, убедитесь, что весь ваш код появился, и ваш ожидаемый результат * prececisely *, что вы хотите. (т. е. если вы хотите HTML, напишите HTML, а не какое-то смутное mish-mash из фигурных скобок, скобок и слэшей.) – Tomalak

+2

Также, пожалуйста, правильно выберите свой заголовок. Речь идет не о том, как использовать XSLT для отображения XML в браузере; это о стандартном выборе XPath, связанном с кодом в/около конструкции 'xsl: for-each'. Отредактировано до * Использование XPath для выбора узлов вне нормальной последовательности xsl: for-each *. – kjhughes

+0

Спасибо. Думаю, теперь это имеет больше смысла. Поэтому любая идея о том, как получить «QuickLink» – SearchForKnowledge

ответ

1

Для задачи a поколения, сделать XPath к QuickLink относительно узла контекста в пределах xsl:for-each путем изменения:

<a href="{QuickLink}" title="Test">Get Direction</a> 

в

<a href="{../QuickLink}" title="Test">Get Direction</a> 

Что касается генерации остальной части вашей псевдо-разметки в HTML, написав XSLT для вас, я бы предпочитают помогать с конкретным вопросом, а не выкручивать код для вас. Сообщите нам, если у вас есть другие конкретные вопросы.

+0

Спасибо. Это все, что мне нужно было знать :) – SearchForKnowledge

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

  • Нет связанных вопросов^_^