изменить текст в теге <I>на курсив - PullRequest
1 голос
/ 27 февраля 2012

это мой xml

    <P style="TEXT-ALIGN: center; MARGIN: 0pt">
        <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 8.5pt; FONT-WEIGHT: bold">Form</SPAN>
            <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 7pt; FONT-WEIGHT: bold">Form</SPAN>
            <SPAN style="FONT-FAMILY: 'COMIC SANS MS'; FONT-SIZE: 6.7pt; FONT-WEIGHT: bold">Form</SPAN>
            <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE:12pt; FONT-WEIGHT: bold">10-Q</SPAN>
            <SPAN style="FONT-FAMILY: 'CURSIVE'; FONT-SIZE:14pt">Hisasdf @ adsfkej % adsfkj-Q</SPAN>
            <SPAN style="FONT-FAMILY: 'Edwardian Script ITC'; FONT-SIZE:18pt">Singhaniadf kurmad-Q</SPAN>
            <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE:36pt"><U>anurag arya fateh ali khan-Q</U></SPAN>
            <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE:12pt"><U>rakesh kumar sinfhania</U></SPAN>
      </P>

    <P style="MARGIN: 0pt">
        <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 18pt">of advisory fees, estimated legal fees, a $0.6</SPAN>
        <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 12pt">million<U> provision for estimated settlement costs associated with shareholder litigation and other 
transition related costs. These amounts are included in the Company?s </U>sults of operations for the three and nine months ended September</SPAN>
    <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 18pt">30, 2010,respectively.</SPAN></P>

<P style="TEXT-ALIGN: center; MARGIN: 0pt">
    <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 12pt; FONT-WEIGHT: bold"><I>Washington,</I></SPAN>
    <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 12pt; FONT-WEIGHT: bold">D.C. &nbsp;&nbsp;&nbsp;&nbsp;20549</SPAN>
    <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 12pt"> 
    </SPAN>
</P>

   <I>of advisory fees, estimated legal fees, a $0.6</I>

Я хочу изменить все вхождения <I> на курсив

я также использую эту строку в выражении соответствия match="span/p/i"

и многие другие, как предлагает Google, чтобы изменить текст курсивом, но не работает, что делать

Ответы [ 2 ]

1 голос
/ 27 февраля 2012

Во-первых, обратите внимание, что предоставленный фрагмент - , а не хорошо сформированный XML.То, что я сделал, чтобы превратить его в правильно сформированный документ XML, было:

  1. Обернул его в один верхний html элемент.

  2. Заменены все вхождения объекта &nbsp; на символьный объект &#xA0; (в качестве альтернативы может быть добавлено небольшое DTD, определяющее объект)

Решение :

Это самое простое преобразование (переопределение правила идентификации):

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="node()|@*">
     <xsl:copy>
       <xsl:apply-templates select="node()|@*"/>
     </xsl:copy>
 </xsl:template>

 <xsl:template match="I">
  <i>
   <xsl:apply-templates/>
  </i>
 </xsl:template>
</xsl:stylesheet>

при применении к любому правильно сформированному документу XML (вВ этом примере мы используем правильно сформированный XML-документ, полученный из предоставленного фрагмента):

<html>
        <P style="TEXT-ALIGN: center; MARGIN: 0pt">
            <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 8.5pt; FONT-WEIGHT: bold">Form</SPAN>
                <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 7pt; FONT-WEIGHT: bold">Form</SPAN>
                <SPAN style="FONT-FAMILY: 'COMIC SANS MS'; FONT-SIZE: 6.7pt; FONT-WEIGHT: bold">Form</SPAN>
                <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE:12pt; FONT-WEIGHT: bold">10-Q</SPAN>
                <SPAN style="FONT-FAMILY: 'CURSIVE'; FONT-SIZE:14pt">Hisasdf @ adsfkej % adsfkj-Q</SPAN>
                <SPAN style="FONT-FAMILY: 'Edwardian Script ITC'; FONT-SIZE:18pt">Singhaniadf kurmad-Q</SPAN>
                <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE:36pt"><U>anurag arya fateh ali khan-Q</U></SPAN>
                <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE:12pt"><U>rakesh kumar sinfhania</U></SPAN>
          </P>

        <P style="MARGIN: 0pt">
            <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 18pt">of advisory fees, estimated legal fees, a $0.6</SPAN>
            <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 12pt">million<U> provision for estimated settlement costs associated with shareholder litigation and other
    transition related costs. These amounts are included in the Company?s </U>sults of operations for the three and nine months ended September</SPAN>
        <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 18pt">30, 2010,respectively.</SPAN></P>

    <P style="TEXT-ALIGN: center; MARGIN: 0pt">
        <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 12pt; FONT-WEIGHT: bold"><I>Washington,</I></SPAN>
        <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 12pt; FONT-WEIGHT: bold">D.C. &#xA0;&#xA0;&#xA0;&#xA0;20549</SPAN>
        <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 12pt">
        </SPAN>
    </P>

       <I>of advisory fees, estimated legal fees, a $0.6</I>

</html>

дает требуемый, правильный результат (<I> заменяется на <i>):

<html>
   <P style="TEXT-ALIGN: center; MARGIN: 0pt">
      <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 8.5pt; FONT-WEIGHT: bold">Form</SPAN>
      <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 7pt; FONT-WEIGHT: bold">Form</SPAN>
      <SPAN style="FONT-FAMILY: 'COMIC SANS MS'; FONT-SIZE: 6.7pt; FONT-WEIGHT: bold">Form</SPAN>
      <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE:12pt; FONT-WEIGHT: bold">10-Q</SPAN>
      <SPAN style="FONT-FAMILY: 'CURSIVE'; FONT-SIZE:14pt">Hisasdf @ adsfkej % adsfkj-Q</SPAN>
      <SPAN style="FONT-FAMILY: 'Edwardian Script ITC'; FONT-SIZE:18pt">Singhaniadf kurmad-Q</SPAN>
      <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE:36pt">
         <U>anurag arya fateh ali khan-Q</U>
      </SPAN>
      <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE:12pt">
         <U>rakesh kumar sinfhania</U>
      </SPAN>
   </P>
   <P style="MARGIN: 0pt">
      <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 18pt">of advisory fees, estimated legal fees, a $0.6</SPAN>
      <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 12pt">million<U> provision for estimated settlement costs associated with shareholder litigation and other
    transition related costs. These amounts are included in the Company?s </U>sults of operations for the three and nine months ended September</SPAN>
      <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 18pt">30, 2010,respectively.</SPAN>
   </P>
   <P style="TEXT-ALIGN: center; MARGIN: 0pt">
      <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 12pt; FONT-WEIGHT: bold">
         <i>Washington,</i>
      </SPAN>
      <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 12pt; FONT-WEIGHT: bold">D.C.     20549</SPAN>
      <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 12pt"/>
   </P>
   <i>of advisory fees, estimated legal fees, a $0.6</i>
</html>
1 голос
/ 27 февраля 2012

Вы забыли добавить важный блок под названием преобразование идентичности в свой XSLT:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xsl:template match="node()|@*" >
        <xsl:copy>
             <xsl:apply-templates select="@*|node()" />
        </xsl:copy>
</xsl:template>

<xsl:template match="I">
            <i> <xsl:value-of select="."/></i>
        </xsl:template>

</xsl:stylesheet>

РЕДАКТИРОВАТЬ - Некоторые пояснения:

Iприменил мой XSLT к следующему XML.Обратите внимание, что я добавил <body></body>, так как согласно стандарту W3C XML может иметь только один корневой элемент .

<body>
<P style="TEXT-ALIGN: center; MARGIN: 0pt">
            <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 8.5pt; FONT-WEIGHT: bold">
            <I>Form tesindf is the good one m trying it</I>
            </SPAN>
            <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 8.5pt; FONT-WEIGHT: bold"><I>Form tesindf is the good one m trying it</I></SPAN>
        </P>
<I>of advisory fees, estimated legal fees, a $0.6</I>
</body>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...