How to select following siblings before the particular following sibling - xslt

I worked on this. but, still, i am having some problem to achieve this. Here is my input
[code]
<contenu1>
<intertitre niveau="1">1 Construire sans permis : infraction intentionnelle ou purement « matérielle » ?</intertitre>
<p>Le nouveau code pénal stipule qu’il.<br/></p>
<p>Le nouveau code pénal stipule qu’il.<br/></p>
<p>Le nouveau code pénal stipule qu’il.<br/></p>
<intertitre niveau="1">2 Quelles sont les principales infractions d’urbanisme ?</intertitre>
<p>La plupart des infractions urbanistiques sont des délits. Pour les délits les plus graves, des peines de dix ans d’emprisonnement peuvent être prononcées.<br/></p>
<p>La plupart des infractions urbanistiques sont des délits. Pour les délits les plus graves, des peines de dix ans d’emprisonnement peuvent être prononcées.<br/></p>
<p>La plupart des infractions urbanistiques sont des délits. Pour les délits les plus graves, des peines de dix ans d’emprisonnement peuvent être prononcées.<br/></p>
<p>La plupart des infractions urbanistiques sont des délits. Pour les délits les plus graves, des peines de dix ans d’emprisonnement peuvent être prononcées.<br/></p>
<intertitre niveau="1">3 Comment est établie la constatation des infractions ?</intertitre>
<p>La constatation des infractions aux règles d’urbanisme, figurant sous le livre IV du code de.<br/></p>
<intertitre niveau="1">4 Quelles mesures urgentes les autorités peuvent-elles actionner avant la saisine du juge ?</intertitre>
<p>La constatation des infractions aux règles d’urbanisme, figurant sous le livre IV du code.<br/></p>
</contenu1>
[/code]
And, My expected output is
[code]
<d1commdo>
<tit><al>1 Construire sans permis : infraction intentionnelle ou purement « matérielle » ?</al></tit>
<p>Le nouveau code pénal stipule qu’il.<br/></p>
<p>Le nouveau code pénal stipule qu’il.<br/></p>
<p>Le nouveau code pénal stipule qu’il.<br/></p></d1commdo>
<d1commdo>
<tit><al>2 Quelles sont les principales infractions d’urbanisme ?</al></tit>
<p>La plupart des infractions urbanistiques sont des délits. Pour les délits les plus graves, des peines de dix ans d’emprisonnement peuvent être prononcées.<br/></p>
<p>La plupart des infractions urbanistiques sont des délits. Pour les délits les plus graves, des peines de dix ans d’emprisonnement peuvent être prononcées.<br/></p>
<p>La plupart des infractions urbanistiques sont des délits. Pour les délits les plus graves, des peines de dix ans d’emprisonnement peuvent être prononcées.<br/></p>
<p>La plupart des infractions urbanistiques sont des délits. Pour les délits les plus graves, des peines de dix ans d’emprisonnement peuvent être prononcées.<br/></p>
</d1commdo>
<d1commdo>
<tit><al>3 Comment est établie la constatation des infractions ?</al></tit>
<p>La constatation des infractions aux règles d’urbanisme, figurant sous le livre IV du code de.<br/></p></d1commdo>
<d1commdo>
<tit><al>4 Quelles mesures urgentes les autorités peuvent-elles actionner avant la saisine du juge ?</al></tit>
<p>La constatation des infractions aux règles d’urbanisme, figurant sous le livre IV du code.<br/></p>
</d1commdo>
[/code]
Could someone please help me to achieve this on XSLT? I need the xslt piece of code.

This XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output omit-xml-declaration="no" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="#*|node()">
<xsl:copy>
<xsl:apply-templates select="#*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/*">
<t>
<xsl:apply-templates select="intertitre"/>
</t>
</xsl:template>
<xsl:template match="intertitre">
<d1commdo>
<tit>
<a1>
<xsl:apply-templates/>
</a1>
</tit>
<xsl:apply-templates select="following-sibling::p[1]"/>
</d1commdo>
</xsl:template>
</xsl:stylesheet>
...,when applied to your source XML, produces the expected output (wrapped in a top-level element to be well-formed):
<?xml version="1.0" encoding="UTF-8"?>
<t>
<d1commdo>
<tit>
<al>1 Construire sans permis : infraction intentionnelle ou purement « matérielle » ?</al>
</tit>
<p>Le nouveau code pénal stipule qu’il.<br/>
</p>
</d1commdo>
<d1commdo>
<tit>
<al>2 Quelles sont les principales infractions d’urbanisme ?</al>
</tit>
<p>La plupart des infractions urbanistiques sont des délits. Pour les délits les plus graves, des peines de dix ans d’emprisonnement peuvent être prononcées.<br/>
</p>
</d1commdo>
<d1commdo>
<tit>
<al>3 Comment est établie la constatation des infractions ?</al>
</tit>
<p>La constatation des infractions aux règles d’urbanisme, figurant sous le livre IV du code de.<br/>
</p>
</d1commdo>
<d1commdo>
<tit>
<al>4 Quelles mesures urgentes les autorités peuvent-elles actionner avant la saisine du juge ?</al>
</tit>
<p>La constatation des infractions aux règles d’urbanisme, figurant sous le livre IV du code.<br/>
</p>
</d1commdo>
</t>

ok, for your new requirements the solution is not trivial but here you have it
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output omit-xml-declaration="no" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="#*|node()">
<xsl:copy>
<xsl:apply-templates select="#*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/*">
<t>
<xsl:apply-templates select="intertitre"/>
</t>
</xsl:template>
<xsl:template match="intertitre">
<xsl:variable name="nextIntertitrePosition"
select="count(following-sibling::intertitre[1]/preceding-sibling::*)"/>
<d1commdo">
<tit>
<a1>
<xsl:apply-templates/>
</a1>
</tit>
<xsl:apply-templates select="following-sibling::p[
count(preceding-sibling::*) < $nextIntertitrePosition
or 0 = $nextIntertitrePosition]"/>
</d1commdo>
</xsl:template>
</xsl:stylesheet>
Edit: some formating done and some minor mistakes removed

Related

Compilation error due to table in C++

I'm trying to create a chat programm for the TI-Nspire Calc via the serial port. So I installed the ndless SDK and nspireio lib to make the communication and it kind of works because there is an infite repetition of the message so I wrote this:
if(uart_ready()) {
char input[100] = {0};
uart_getsn(input,100);
if(oldinput != input) {
nio_puts(input);
oldinput = input;
}
}
But when I compile it give me this error:
root#Kali-Linux:~/TINSPIRE/Ndless/ndless-sdk/samples/uart# make
nspire-g++ -Wall -W -marm -Os -c hello.cpp
hello.cpp: Dans la fonction « int main() »:
hello.cpp:61:14: error: affectation de tableau invalide
oldinput = input;
^~~~~
Makefile:33 : la recette pour la cible « hello.o » a échouée
make: *** [hello.o] Erreur 1
What I'm doing wrong?
If oldinput is also a char array,
replace oldinput=input with
strcpy(oldinput,input);
You should declare oldinput:
char oldinput[100] = {0};
memcpy(oldinput, input, sizeof(char) * 100);

opencv 3.0 visual studio community 2017 compilation LINK errors

I installed opencv 3.0 in my windows10 64 bit. I created a C++ project in visual studio community 2017 and did all these steps provided in opencv documentation (local method in this link which are:
1- creation of environment variable:
OPENCV_DIR C:\Program Files\opencv\build\x86\vc11
With I added in user and system Path as follow
%OPENCV_DIR%\bin
2- In my project I added in Properties -> C/C++ -> additional include repositories:
C:\Program Files\opencv\build\include
3- Properties -> Link -> General:
$(OPENCV_DIR)\lib
$(OPENCV_DIR)\staticlib
I included staticlib because at first the compiler didn't find opencv_core300d.lib while this one exists in staticlib, so I added it.
checked YES for use library dependency entries
4- Properties -> Link -> Entry:
opencv_core300d.lib
opencv_highgui300d.lib
opencv_imgproc300d.lib
opencv_ml300d.lib
opencv_ts300d.lib
with Herited values:
kernel32.lib
user32.lib
gdi32.lib
winspool.lib
comdlg32.lib
advapi32.lib
I got more 800 errors all related to mismatch between values in .obj files related to opencv_core300d.lib:
1>Source.cpp
1>opencv_core300d.lib(alloc.obj) : error LNK2038: discordance détectée pour '_MSC_VER' : la valeur '1700' ne correspond pas à la valeur '1900' in Source.obj
1>opencv_core300d.lib(alloc.obj) : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MTd_StaticDebug' ne correspond pas à la valeur 'MDd_DynamicDebug' in Source.obj
1>opencv_core300d.lib(stl.obj) : error LNK2038: discordance détectée pour '_MSC_VER' : la valeur '1700' ne correspond pas à la valeur '1900' in Source.obj
1>opencv_core300d.lib(stl.obj) : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MTd_StaticDebug' ne correspond pas à la valeur 'MDd_DynamicDebug' in Source.obj
1>opencv_core300d.lib(matrix.obj) : error LNK2038: discordance détectée pour '_MSC_VER' : la valeur '1700' ne correspond pas à la valeur '1900' in Source.obj
1>opencv_core300d.lib(matrix.obj) : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MTd_StaticDebug' ne correspond pas à la valeur 'MDd_DynamicDebug' in Source.obj
1>opencv_core300d.lib(opencv_core_pch.obj) : error LNK2038: discordance détectée pour '_MSC_VER' : la valeur '1700' ne correspond pas à la valeur '1900' in Source.obj
1>opencv_core300d.lib(opencv_core_pch.obj) : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MTd_StaticDebug' ne correspond pas à la valeur 'MDd_DynamicDebug' in Source.obj
1>opencv_core300d.lib(system.obj) : error LNK2038: discordance détectée pour '_MSC_VER' : la valeur '1700' ne correspond pas à la valeur '1900' in Source.obj
I tried to resolve the issue by checking similar answers to similar errors and according to this answer it's due to different versions of the compiler. If so, how to correct it?
Sample code used to test that opencv works:
#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
if (argc != 2)
{
cout << " Usage: display_image ImageToLoadAndDisplay" << endl;
return -1;
}
Mat image;
image = imread(argv[1], IMREAD_COLOR); // Read the file
if (image.empty()) // Check for invalid input
{
cout << "Could not open or find the image" << std::endl;
return -1;
}
namedWindow("Display window", WINDOW_AUTOSIZE); // Create a window for display.
imshow("Display window", image); // Show our image inside it.
waitKey(0); // Wait for a keystroke in the window
return 0;
}
I need help!
Thank you.
These error is due to different build version of the opencv library. You can download the pre build binaries for your compiler version if available or else you need to build OpenCV from source using cmake. In your case you require binaries built for vs2017 i.e. _MSC_VER 1900.

C++ Encoding (special character Ø,é...)

I work with
C++/Windows/minGw
I get from file .xml a string with special character
The rise witting on the file xml is "Quimby_éé_ØØ R90 GP_NomPoints.txt"
The result is different with strangs characters
My file.xml sounds ok :
<?xml version="1.0" encoding="UTF-8"?>
Test :
When I get from file .txt a string with special character ,it dosesn't work
When I write the string to .txt file it works fine.
Then There might be some problem with the ide console.
My code:
void parser_fichier_xml(string fich,string &ActPoints,string &NomPoints)
{
//string ActPoints;
//string NomPoints;
TiXmlDocument doc(fich.c_str());
if(doc.LoadFile(TIXML_ENCODING_UTF8))
{
TiXmlHandle hdl(&doc);
TiXmlElement *elem = hdl.FirstChildElement("GeometryData").FirstChildElement("Element").Element(); //Création de elem (arbre DOM constituant noeud --enfant)
if(!elem)
{
cout<<"le noeud à atteindre n'existe pas"<<endl;
//return 1;
} //boucle pour vérifier que l'élément ait bien un enfant
/* ********* Recuperer chemin nompoint actpoint dans balise XML *********** */
ActPoints = elem->Attribute("ActPoints");
NomPoints = elem->Attribute("NomPoints");
/* *****test dans fichier de sorti ***** */
string const nomFichier("Z:/Production/Methodes/InfoTec/Developpement/Zeiss_PCM/toCALYPSO/test.txt");
ofstream fichier(nomFichier.c_str());
if(fichier)
{
fichier << NomPoints<< endl;
fichier.close();
}
else
cerr << "Impossible d'ouvrir le fichier test.txt !" << endl;
/* ************************************************** */
debug_string("Chemin ActPoints: ",ActPoints,"Chemin NomPoints: ",NomPoints); //affiche dans console
}
else
{
cerr << "Erreur d'ouverture du fichier .XML" << endl;
}
}
As answers, I doesn't like a function that replace special character but something that changes all
If someone may help me
Thks a lot
The windows console barely supports Unicode, definitely not UTF-8, and MinGW's std::cout doesn't help you. Sorry.
Thks for answers,
For comments.i will minimise my vode the next time.
I know what UFT-8 is ,
ASCII isn't enough (without Ø ,é ...)
UNICODE is theoric
For pratical , i've 2 choices ISO 8859 or UTF-8 and
UTF-8 is more complete (japanese ,etc..)
Test :
I tried this special chars " à " and the result is " á "
The display(cout or printf) is not important because i get the value(the result) like path.
i'm going to try with ISO 8859 but even with a file text that contains "éé_ØØ " , the console doesn't write same "éé_ØØ "
Sorry i can't send the picture of the result (this website ask 10 reputations)

UART on SAM4SxPLAINED

UART on SAM4SxPLAINED
Hello,
I have a program which (almost) works !
The characters are transmitted but they are not still the ones hoped.
Who can correct?
Thank you for everything.
Greetings.
Voici le code :
#include "sam.h"
// Fréquence d'horloge
#define MCLK CHIP_FREQ_MAINCK_RC_4MHZ
// Configure UART
#define BAUD 115200
#define PARITY UART_MR_PAR_NO
//#define PARITY UART_MR_PAR_EVEN
// Définitions pour PA9 comme RX_UART0 et PA10 comme TX_UART0 (Périphérique A).
#define RXTX_PIO PIOA
#define RX_PIN PIO_PA9
#define TX_PIN PIO_PA10
#define UART UART0
#define UART_PID ID_UART0
#define RXTX_IRQn PIOA_IRQn
#define UART_IRQn UART0_IRQn
//prototype pour les fonctions. On ne veut pas faire un .h pour ça !
void hardware_init( void ) ;
void hardware_init( void )
{
//pour utiliser RX_UART et TX_UART.
PMC->PMC_PCER0 = (1 << UART_PID) ;
RXTX_PIO->PIO_IDR |= RX_PIN | TX_PIN ;
// Sélectionne le périphérique A
RXTX_PIO->PIO_ABCDSR[0] &= ~(RX_PIN | TX_PIN) ;
RXTX_PIO->PIO_ABCDSR[1] &= ~(RX_PIN | TX_PIN) ;
RXTX_PIO->PIO_PDR = (RX_PIN | TX_PIN) ;
//Configure UART
UART->UART_BRGR= MCLK / (BAUD * 16) ;
UART->UART_CR = UART_CR_TXEN | UART_CR_RXEN ;
UART->UART_IER = UART_IER_RXRDY ;
// Active les interruptions sur UART;
NVIC_EnableIRQ( UART_IRQn ) ;
// Configure Systick pour un déclenchement chaque milliseconde
SysTick_Config( SystemCoreClock/1000UL ) ;
NVIC_EnableIRQ( SysTick_IRQn ) ;
}
// Variable globale pour compter les tics
static uint32_t ul_tickcount=0 ;
// Variable globale pour UART_Handler
static int32_t tr ;
static uint32_t j = 0 ;
static char chaine[] = "Bonjour UART0 " ;
static uint8_t nb_car = 14 ; //nombre de caractères de chaine
void SysTick_Handler( void )
{
ul_tickcount++ ;
// envoie un caractère toutes les secondes (ie 1000ms)
if ( ul_tickcount == 1000)
{
if (j == nb_car)
{
j=0;
}
while(!(UART->UART_SR & UART_SR_TXRDY)) ;
UART->UART_THR = chaine[j] ;
j++ ;
ul_tickcount = 0 ;
}
}
void UART0_Handler( void )
{
if (UART->UART_SR & UART_SR_RXRDY)
{
tr = UART->UART_RHR ;
while(!(UART->UART_SR & UART_SR_TXRDY));
UART->UART_THR = tr - 1 ;
}
}
int main (void)
{
hardware_init() ;
while ( 1 )
{
}
}

Error opening ports in C++ to Arduino in Ubuntu

I am programming in ARduino and I am try to connect Arduino with C++. I have the folowing function:
//Prueba.cpp
#include <iostream>
#include <SerialStream.h>
#include "/usr/local/lib/libserial.so.0.0.0"
using namespace std;
using namespace LibSerial;
int main() {
SerialStream my_serial_stream;
my_serial_stream.Open("/dev/ttyACM0");
my_serial_stream.SetBaudRate(SerialStreamBuf::BAUD_9600);
my_serial_stream << "a0" << endl;
return 0;
}
But when I exeute it, give me a lot of error with like this.
usr/local/lib/libserial.so.0.0.0:99:1: error: ‘\377’ parásito en el programa
/usr/local/lib/libserial.so.0.0.0:99:1: error: ‘\17’ parásito en el programa
/usr/local/lib/libserial.so.0.0.0:99:1: error: ‘\37’ parásito en el programa
/usr/local/lib/libserial.so.0.0.0:99:1: error: ‘\200’ parásito en el programa
In file included from Prueba.cpp:11:0:
/usr/local/lib/libserial.so.0.0.0:99:914: aviso: caracter(es) nulo(s) ignorados [activado por defecto]
In file included from Prueba.cpp:11:0:
/usr/local/lib/libserial.so.0.0.0:99:1: error: ‘\205’ parásito en el programa
/usr/local/lib/libserial.so.0.0.0:99:1: error: ‘\355’ parásito en el programa
/usr/local/lib/libserial.so.0.0.0:99:1: error: ‘\17’ parásito en el programa
/usr/local/lib/libserial.so.0.0.0:99:1: error: ‘\204’ parásito en el programa
/usr/local/lib/libserial.so.0.0.0:99:1: error: ‘\351’ parásito en el programa
/usr/local/lib/libserial.so.0.0.0:99:1: error: ‘\376’ parásito en el programa
/usr/local/lib/libserial.so.0.0.0:99:1: error: ‘\377’ parásito en el programa
/usr/local/lib/libserial.so.0.0.0:99:1: error: ‘\377’ parásito en el programa
/usr/local/lib/libserial.so.0.0.0:99:1: error: ‘\277’ parásito en el programa
/usr/local/lib/libserial.so.0.0.0:99:1: error: ‘\20’ parásito en el programa
Anyone know hay this happend? I installed libserial with sudo apt-get install libserdial-dev but nothing.
I suppose that this might help you in general: this