Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Jde obarvit text (CSS) na základě textového řetězce?

Denně dělám monitoring médií. Přijde mí XML soubor, ten si nastyluji a pak z něj vybírám články (tak 10 z 50). Bylo by pro mě hodně přehledné, kdybych si mohl obarvit URL, jelikož mohu vybírat pouze články, kde URL je. Problém je v tom, že nemá URL žádný identifikátor a je součástí textu článku

zdroj
[http://pc.poradna.net/file/view/18816-url-zdroj-pn g]

s CSS
[http://pc.poradna.net/file/view/18817-url-batrevne -png]

Jde to nějak udělat?

Předmět Autor Datum
A skusal si vlozit v css nieco take ako: a:link {color:#9E0404; text-decoration:none}
Adrián S. 18.06.2014 10:55
Adrián S.
Není to link. Ten bych uměl. Je to jen text.
krata-mobil 18.06.2014 11:45
krata-mobil
HTML: <span class="něco"></span> CSS: .něco {color:red; text-decoration:none;} Pokud tedy dobře ch…
Mayhem 18.06.2014 12:32
Mayhem
Dyk píšu, že tam není identifikátor (to "neco") a je to jen textový řetězec. Kdyby tam byl, dávno to…
krata-mobil 18.06.2014 13:27
krata-mobil
Z jakého důvodu je to odsazené o řádek? (jsou tam nějaké tagy jako BR nebo jen CRLF)? Pokud se to bu…
wedos 18.06.2014 11:32
wedos
Jo on není vidět ten konec řádku. Žádný tag tam není.
krata-mobil 18.06.2014 11:43
krata-mobil
vsak tu istu URL mas v tagu Odkaz. Alebo to nie je pravidlom? Ako ten XML "stylujes"? Prebehnes to n…
wam_Spider007 18.06.2014 12:45
wam_Spider007
Nahoře to je pouze obarvené. Čtu to však odspodu
krata-mobil 18.06.2014 13:30
krata-mobil
Přijde mí XML soubor, ten si nastyluji a pak z něj vybírám články Ten XML soubor by šel vyfiltrova…
hynajs 18.06.2014 12:53
hynajs
Tam právě nejsou odkazy. Ty dělám až já ppři vkládání.
krata-mobil 18.06.2014 13:24
krata-mobil
Takže změna: Ten XML soubor by šel vyfiltrovat, aby zbyly jen články s URL, např. pomocí PHP DOM.
hynajs 18.06.2014 14:03
hynajs
Nevkládám všechny články, co mají URL. Z těch 50 má URL třeba 30 a z těch 30 vkládám 10 sem monitori…
Kráťa 19.06.2014 00:23
Kráťa
A je tam teda alespon vzdy to URL| pred tim okazem?
MaSo 18.06.2014 13:37
MaSo
Jo právě že tohle tam je vždy a byla by to identifikace. V podstatě můj dotaz.
krata-mobil 18.06.2014 14:01
krata-mobil
Muzes sem vlozit jedno takove XML, at mam na cem testovat? Neco bych ti spichnul...:-)
MaSo 18.06.2014 14:59
MaSo
Až budu doma. Tady ho ani nemám. Ale je k vidění na anopress
krata-mobil 18.06.2014 18:26
krata-mobil
Nad článkom máš ten odkaz naštýlovaný ako odkaz, takže si ho môžeš naštýlovať farebne - to nestačí?…
los 18.06.2014 20:11
los
Přišel jsem na to, že by stačilo vložit za URL| <span style='color: blue'>. Jenže neumím udělat regu…
Kráťa 18.06.2014 23:43
Kráťa
Aha, pokud tedy není zakázané ten dokument měnit ( nebo jej číst a z něj vytvoří jiný), pak je to pr…
kurare 19.06.2014 00:59
kurare
Mám to jen na lokale a je to soubor čistě pro mou potřebu. Jasně, že bych to nahradil pouze <span> a…
Kráťa 19.06.2014 08:56
Kráťa
Nahraď si v tej XSLT transformácii tú časť na odstraňovanie článkov bez odkazu: <xsl:template match…
los 19.06.2014 21:37
los
Nějak se mi nedaří. Ani z exslt-function.html nejsem moudrý. Mám tam <?xml version="1.0" encoding="…
Kráťa 20.06.2014 06:59
Kráťa
Ty si pridal xml-stylesheet do XSLT transormácie? Tak to nefunguje. Máš spraviť toto: 1. Stiahneš si…
los 20.06.2014 07:09
los
Co něco takového do konvertoru? najdi "URL|" nahraď za <span style="color blue>#(http://|ftp://|(www…
Kráťa 19.06.2014 02:08
Kráťa
- Pres id="#", class"#", nastavit v CSS, ale jak jde o odkaz, ktery bude i tak modry, uz od začatku…
CoCoChanel 19.06.2014 01:37
CoCoChanel
Když mi prozradíš, jak tam mám z URL| ruznéadresy udělat <span>ta adresa</span>, tak mi to bude stač…
Kráťa 19.06.2014 02:10
Kráťa
<a style = "color: #800000" href = "rúzné adresy/"> Text </ a> Nebo <SPAN style="color xxxxxx:url(sc…
CoCoChanel 19.06.2014 08:04
CoCoChanel
Není to odkaz a nebude to odkaz. Je to pouze textový řetězec a chci si to jen obarvit, abych to lépe…
Kráťa 19.06.2014 08:41
Kráťa
Tady to je, pokud mas teda Javu na PC. Spustis z cmd: java -jar Krata.jar <cesta-ke-xml> Vygeneruj…
MaSo 19.06.2014 09:19
MaSo
Dík, vyzkouším a písnu tu.
Kráťa 19.06.2014 09:22
Kráťa
sed "s/URL|.\(.*$\)/<span>\1<\/span>/" xml-bez-css.xml…
emem 19.06.2014 17:57
emem
Jo a to escapování vyřešíš pomocí http://www.php.net/manual/en/function.preg-replace -callback.php]…
kurare 19.06.2014 23:05
kurare
V tom hledám složitosti, jak obarvit adresu. Jde jen o to, jak to čtu odspodu, abych viděl, že má čl… poslední
Kráťa 24.06.2014 10:51
Kráťa

Nad článkom máš ten odkaz naštýlovaný ako odkaz, takže si ho môžeš naštýlovať farebne - to nestačí?

Ináč na toto je najvhodnejšie použiť XSLT transformáciu, pomocou ktorej môžeš úplne odstrániť všetky články bez odkazu, takže ich ani neuvidíš - viď príloha.

Namiesto tohoto:

<?xml-stylesheet type="text/css" href="data.css"?>

Použiješ toto:

<?xml-stylesheet type="text/xsl" href="data.xsl"?>

Přišel jsem na to, že by stačilo vložit za URL| <span style='color: blue'>. Jenže neumím udělat regulární výraz, aby se mi vložilo ukončení </span> za adresu. Když to udělám ručně, mám to zobrazené jak potřebuji (nic jiného nechci). Přidal bych si to v PSPadu jako uživatelský konvertor. Nahradit
URL| za URL| <span style='color: blue'> a bylo by.

Aha, pokud tedy není zakázané ten dokument měnit ( nebo jej číst a z něj vytvoří jiný), pak je to primitivní.
A regulerní výraz je jednoduchý (ruby)
"URL | http.cz".sub /(?<=^URL \| )(.+)/, '@\1@'
Stačí jedna back assertion ?<= a jedna backreference \1. Php umí v tomhle víc, umí je i pojmenované , více zde
http://php.net/manual/en/regexp.reference.back-ref erences.php
http://www.php.net/manual/en/regexp.reference.subp atterns.php

A nezapomenout na escapování! (odkaz bude hodnota html atributu href=)

A jedna rada: je zhovadilost psát <span style color", jelikož se jedná o přímý vizuální stylování. Logičtější je dát třeba <footer><a href=></footer> a nastylovat to externě

Nahraď si v tej XSLT transformácii tú časť na odstraňovanie článkov bez odkazu:

<xsl:template match="Document[not(Hlavicka_Clanku/Odkaz)]">
</xsl:template>

Za zvýrazňovanie odkazu:

<xsl:template match="Text_Clanku">
	<Text_Clanku>
		<xsl:choose>
			<xsl:when test="contains(text(), 'URL| ')"><xsl:value-of select="substring-before(text(), 'URL| ')"/>URL| <span style="color:blue"><xsl:value-of select="substring-after(text(), 'URL| ')"/></span></xsl:when>
			<xsl:otherwise><xsl:value-of select="text()"/></xsl:otherwise>
		</xsl:choose>
	</Text_Clanku>
</xsl:template>

Nějak se mi nedaří. Ani z
exslt-function.html
nejsem moudrý. Mám tam

<?xml version="1.0" encoding="windows-1250" ?>
<?xml-stylesheet type="text/xsl" href="data.xsl"?>
<xsl:template match="Document[not(Hlavicka_Clanku/Odkaz)]">
</xsl:template>
<xsl:template match="Text_Clanku">
	<Text_Clanku>
		<xsl:choose>
			<xsl:when test="contains(text(), 'URL| ')"><xsl:value-of select="substring-before(text(), 'URL| ')"/>URL| <span style="color:blue"><xsl:value-of select="substring-after(text(), 'URL| ')"/></span></xsl:when>
			<xsl:otherwise><xsl:value-of select="text()"/></xsl:otherwise>
		</xsl:choose>
	</Text_Clanku>
</xsl:template>

a

[http://pc.poradna.net/file/view/18848-xml-chyba-pn g]

Ty si pridal xml-stylesheet do XSLT transormácie? Tak to nefunguje. Máš spraviť toto:
1. Stiahneš si tú XSLT transformáciu.
2. Vyhodíš z nej šablónu pre "Document[not(Hlavicka_Clanku/Odkaz)]".
3. Vložíš do nej šablónu pre "Text_Clanku".
4. V xml-stylesheet, ktorý je v tom dátovom XML, budeš namiesto CSS odkazovať na XSLT.

Co něco takového do konvertoru?
najdi "URL|"
nahraď za <span style="color blue>#(http://|ftp://|(www\.))([\w\-]*\.[\w\-\.]*( [/?][^\s]*)?)#e</span>

Já vím, ten výraz je blbě. Jen jsem zkopíroval to, co jsi mi jednou vymyslel na převody na odkazy.
Jenže to by se mi vlastně napsaly ty znaky. :-/

- Pres id="#", class"#", nastavit v CSS, ale jak jde o odkaz, ktery bude i tak modry, uz od začatku bych ho dal treba do<me>, <span> a v CSS určit zbytek, jak de o odkaz, tak barvy po kliku, najetí, doplnit s hover.

<a style = "color: #800000" href = "rúzné adresy/"> Text </ a>
Nebo
<SPAN style="color xxxxxx:url(scare.jpg)">
text</SPAN>
Nebo to nechat jen v <a> nemas-li ji víc (jinak pres class"">
CSS
a{color:red} /*počáteční barva*/
a:hover{color:blue} /*barva po prejetí misí*/
a:active{color:green}/*barva kdyz kliknes*/
visited{color:black}/barva po zhlédnutí*/
Ale i tak, bych odkazu pridal spíse kupríkladu:
<a class="ahoj" urlxxxxxxx></>
A v CSS
.ahoj
{
Color: xxx;
xxxx;
xxxx;
}

V tom hledám složitosti, jak obarvit adresu. Jde jen o to, jak to čtu odspodu, abych viděl, že má článek URL, takže jsem si přidal do uživatelského konvertoru, aby se URL nahradilo za <url>URL</url>, to si pak nastyloval, aby to bylo dobře vidět.

[http://pc.poradna.net/file/view/18897-url-zalena-p ng]
origoš
http://krata.bubakov.net/www/helpnet/anopress/orig .xml
nastylované
http://krata.bubakov.net/www/helpnet/anopress/orig -css.xml

Používám konvertor, makro a ctrl+s. Ještě to musím zredukovat na pouhé jedno zmáčknutí. Čili pustit makro, makro vloží konvertor, link na CSS a uloží soubor. Jenže nemohu přijít příkazy, jak vložit do makra vložení konvertoru a uložení souboru.

Děkuji všem za rady a značím za vyřešené.

Zpět do poradny Odpovědět na původní otázku Nahoru